golang链表反转如何实现

   2025-02-15 3170
核心提示:要实现golang链表的反转,可以采用迭代的方式或者递归的方式。迭代方式的代码如下:type ListNode struct {ValintNext *ListNode

要实现golang链表的反转,可以采用迭代的方式或者递归的方式。

迭代方式的代码如下:

type ListNode struct {    Val  int    Next *ListNode}func reverseList(head *ListNode) *ListNode {    var prev *ListNode // 上一个节点    curr := head       // 当前遍历的节点    for curr != nil {        next := curr.Next // 保存下一个节点        curr.Next = prev  // 将当前节点的Next指向上一个节点        prev = curr       // 更新上一个节点为当前节点        curr = next       // 更新当前节点为下一个节点    }    return prev // 返回反转后的头节点}

递归方式的代码如下:

type ListNode struct {    Val  int    Next *ListNode}func reverseList(head *ListNode) *ListNode {    if head == nil || head.Next == nil {        return head    }    newHead := reverseList(head.Next) // 先反转后面的链表    head.Next.Next = head             // 将当前节点的下一个节点的Next指向当前节点,实现反转    head.Next = nil                   // 将当前节点的Next置为nil,防止形成环    return newHead                    // 返回新的头节点}

以上代码实现了golang链表的反转,分别采用了迭代和递归两种方式。

 
 
更多>同类维修知识
推荐图文
推荐维修知识
点击排行
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  网站留言