美文网首页Go
反转链表的两种方法

反转链表的两种方法

作者: BenOnTheRoad | 来源:发表于2019-07-19 16:39 被阅读0次
  1. 迭代

遍历链表,存储下一个节点,将当前节点的 next 指针指向前一个节点,并将当前节点存储为上一个节点,将下一个节点存储为当前节点。

func reverseList(head *ListNode) *ListNode {
    if head == nil || head.Next == nil {
        return head
    }
    var prev, cur, next *ListNode
    cur = head
    for cur != nil {
        next = cur.Next
        cur.Next, prev = prev, cur
        cur = next
    }
    return prev
}
  1. 递归

递归遍历链表,将当前节点的下一个节点的next指针指向当前节点,当前节点的next指针指向空。
假设链表结构为1->2->NULL,则上述操作的结果为节点1的下一个节点(即节点2)的next指针指向节点1(2->1),而节点1的next指针指向NULL(1->2),最终得到的结果是2->1->NULL。

func reverseList(head *ListNode) *ListNode {
    if head == nil || head.Next == nil {
        return head
    }
    node := reverseList(head.Next)
    head.Next.Next, head.Next = head, nil
    return node
}

相关文章

  • Swift 反转链表 - LeetCode

    题目: 反转链表 反转一个单链表。示例: 进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题? 方案一...

  • LeetCodeSwift 206.Reverse Linked

    题目 206.反转链表 反转一个单链表。 示例: 进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题? ...

  • 206#反转链表

    题目描述 206#反转链表 反转一个单链表。 示例: 进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题...

  • 206. 反转链表

    反转一个单链表。 你可以迭代或递归地反转链表。你能否用两种方法解决这道题?

  • 206. 反转链表(Python)

    题目 难度:★★☆☆☆类型:链表 反转一个单链表。 进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?...

  • leetcode-反转链表

    反转一个单链表。 示例: 进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题? 代码

  • leetcode--206--反转链表

    题目:反转一个单链表。 示例: 进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题? 链接:https:...

  • 反转链表

    反转一个单链表。 示例: 进阶: 你可以迭代或递归地反转链表。你能否用两种方法解决这道题? 解法1(递归): 思路...

  • Swift - LeetCode - 反转链表

    题目 反转一个单链表。 示例: 进阶: 你可以迭代或递归地反转链表。你能否用两种方法解决这道题? 方案一: 迭代:...

  • LeetCode初级-反转链表

    题目: 反转一个单链表。 示例: 进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题? 题目分析: 参考...

网友评论

    本文标题:反转链表的两种方法

    本文链接:https://www.haomeiwen.com/subject/vcsslctx.html