1.迭代
func reversrList(head *ListNode) *ListNode {
cur := head
var pre *ListNode = nil
for cur != nil {
pre, cur, cur.Next = cur, cur.Next, pre //这句话最重要
}
return pre
}
2.迭代
不使用递归,使用三个指针来完成迭代
第一个curr代表当前节点
第二个prev代表前一个节点,也就是curr要指向prev
第三个next临时存储后一个节点,防止断链
func reverseList(head *ListNode) *ListNode {
var prev *ListNode
curr := head
for curr != nil {
next := curr.Next
curr.Next = prev
prev = curr
curr = next
}
return prev
}
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func reverseList(head *ListNode) *ListNode {
var pre *ListNode=nil
cur :=head
for cur!=nil{
t := cur.Next
cur.Next = pre
pre = cur
cur = t
}
return pre
}