206. 反转链表
题目
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]
来源:力扣(LeetCode)
解答
先上代码
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func reverseList(head *ListNode) *ListNode {
var ret *ListNode
p := head
for p != nil {
next := p.Next
p.Next = ret
ret = p
p = next
}
return ret
}
基本思想就是如图所示:

p从head依次遍历至尾节点的next,ret紧随其后。
开始ret指向空,p指向head,再建立一个临时存储量tmp,开始循环,循环条件是p != nil
tmp临时量接受p.Next,让p的Next指向ret,然后让ret指向当前的p,再让p指向tmp(也就是原来的p的next),依次循环即可

浙公网安备 33010602011771号