反转链表
题目描述
给你单链表的头节点 head
,请你反转链表,并返回反转后的链表。
示例 1:
输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1]
示例 2:
输入:head = [1,2] 输出:[2,1]
示例 3:
输入:head = [] 输出:[]
思路
题目要求
- 给定一个链表,反转该链表
- 返回反转后的链表
因为是单链表,所以要标记当前节点的前节点可以使用双指针法,一个标记前节点,一个标记当前节点;翻转完成后两个指针都往后移动
注意
- 翻转前,定义一个临时节点,存储当前节点的后一个节点。否则,当一组节点翻转后,双指针无法向后移动。
- 记得初始化
pre
为空,因为在Go中int
型默认值为0
代码
Go
/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */ func reverseList(head *ListNode) *ListNode { pre := new(ListNode) pre = nil for cur := head; cur != nil; { temp := cur.Next cur.Next = pre pre = cur cur = temp } return pre }