91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

golang鏈表反轉如何實現

小億
103
2023-10-26 20:12:47
欄目: 編程語言

要實現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鏈表的反轉,分別采用了迭代和遞歸兩種方式。

0
漾濞| 天峨县| 盱眙县| 黎平县| 尉犁县| 九龙县| 惠来县| 平定县| 柯坪县| 清流县| 平罗县| 重庆市| 余江县| 涪陵区| 广灵县| 孟津县| 三都| 五原县| 罗山县| 铜陵市| 四会市| 贞丰县| 冕宁县| 佛冈县| 乐业县| 龙海市| 吉林省| 刚察县| 郸城县| 牡丹江市| 莒南县| 平遥县| 江门市| 镇沅| 麻栗坡县| 信宜市| 沧州市| 广州市| 河北省| 松阳县| 平舆县|