力扣链表基础之反转链表

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

示例

1
2
输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]

思路

首先定义一个pre指针指向nil, 然后定义一个cur指向头节点。然后开始翻转:

首先把cur->next节点用tmp指针保存一下,接下来改变cur-next的指向,将cur->next指向pre.

随后依次更新pre和cur。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
type ListNode struct {
Val int
Next *ListNode
}

func reverseList(head *ListNode) *ListNode {
var pre *ListNode
cur := head
for cur != nil {
tmp := cur.Next
cur.Next = pre
pre = cur
cur = tmp
}
return pre
}