返回

LeetCode 0206.反转链表

反转链表

LeetCode206. 反转链表

题目描述

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

示例 1:

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

示例 2:

1
2
输入:head = [1,2]
输出:[2,1]

示例 3:

1
2
输入:head = []
输出:[]

思路

题目要求

  • 给定一个链表,反转该链表
  • 返回反转后的链表

因为是单链表,所以要标记当前节点的前节点可以使用双指针法,一个标记前节点,一个标记当前节点;翻转完成后两个指针都往后移动

注意

  • 翻转前,定义一个临时节点,存储当前节点的后一个节点。否则,当一组节点翻转后,双指针无法向后移动。
  • 记得初始化pre为空,因为在Go中int型默认值为0

代码

Go

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
/**
 * 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
}

GitHub

Built with Hugo
Theme Stack designed by Jimmy