【Golang 刷题之路】转世重修第二百零六题:反转链表 Golang轻松学习

一、两数相加?

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

二、详细代码

1.理清题目思路

  1. 要求是什么?我们需要将链表反转
    链表:通过指针互相连接
  2. 条件是什么?链表需依照顺序进行头尾互换
  3. 优化是什么?依托于另一个链表不断将节点存入

2.代码思路,带注释

代码如下(示例):

func reverseList(head *ListNode) *ListNode {

	// 声明另一个链表 m 
   var m *ListNode

	// 当链表为空或只有一个数字时,反转即为本身
   if head == nil || head.Next == nil {
    return head
   }
   

    for {
    	// 中间变量 a 先存下 head 的位置
        a := head
        // head 转移至下一个节点,也就是从原链表中删除head
        // 将中间变量指向另一个链表 m ,此时中间变量已存入一个节点作为 尾部
        head,a.Next = head.Next,m
        // 将 m 此时再指向 a , a 此时本身位置为原 head 的位置
        // 且下一个节点为原 m 那么此时也就是 m 在头部添加上了原head 作为头部
        m = a
        // 取完一个节点后,若此时链表为空,则证明我们已反转完毕
        if head == nil {
            return m
        }
    }

}

结果


总结

反转链表是极其热门的考题,通过题目可以了解考生对链表的熟悉程度。通过查看热度也能发现该题热度很高,即使在第二百多题,
通过次数1,013,818提交次数1,390,692,依然很多。
希望看到博文的你能够燃起斗志,成为一个很认真的人就在今天就在现在,学习之路启程,不畏险阻。

希望这个博客能对你有所益处。我是轻王,我为自己代言。