Talk is cheap.
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func reverseList(head *ListNode) *ListNode {
var pre *ListNode
for head != nil {
pre, head.Next, head = head, pre, head.Next
}
return pre
}
# 递归法
func reverseList(head *ListNode) *ListNode {
var newHead *ListNode
if head == nil || head.Next == nil {
return head
} else {
newHead = reverseList(head.Next)
head.Next.Next = head
head.Next = nil
}
return newHead
}
func reverseList(head *ListNode) *ListNode {
if head == nil || head.Next == nil {
return head
}
dummy := &ListNode{Next: head}
for head.Next != nil {
cur := head.Next
head.Next = cur.Next
cur.Next = dummy.Next
dummy.Next = cur
}
return dummy.Next
}