面试题24. 反转链表

image.png

  1. func reverseList(head *ListNode) *ListNode {
  2. var pre *ListNode
  3. curr := head
  4. for curr!= nil{
  5. pre,curr,curr.Next = curr,curr.Next,pre
  6. }
  7. return pre
  8. }

image.png

栈思维

每次在头部插入指针,不停迭代头部指针

  1. func reverseList(head *ListNode) *ListNode {
  2. dummyHead :=&ListNode{
  3. Val: -1,
  4. }
  5. for head!= nil{
  6. pre := dummyHead.Next
  7. next :=head.Next
  8. dummyHead.Next = head
  9. head.Next = pre
  10. head = next
  11. }
  12. return dummyHead.Next
  13. }