反转链表
题目描述:
反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL
解题思路:
双指针迭代
两个指针,第一个指针叫 prev,最初是指向 null 的。第二个指针是 head 本身,然后不断遍历 head。每次迭代到 head,都将 head 的 next 指向 prev,然后 prev 和 head 移动一位。都迭代完了(head 变成 null 了),prev 就是最后一个节点了。动画演示如下:

代码:
//go
func reverseList(head *ListNode) *ListNode {
 var prev *ListNode
 for head != nil {
  //反转链表,注意顺序!
  next := head.Next // 先保存下一个节点,不然后面找不着
  head.Next = prev  // 当前节点指向上一个节点
  prev = head
  head = next
  // 语法性质可简写如下
  // head.Next, head, prev = prev, head.Next, head
 }
 return prev
}
地址:https://mp.weixin.qq.com/s/IVI1Wctf5-0u7dvPPqxQnw
    small_lei_it  技术无止境,追求更高。
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号