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

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

golang中怎么反轉鏈表

發布時間:2021-07-19 15:02:20 來源:億速云 閱讀:139 作者:Leah 欄目:編程語言

這期內容當中小編將會給大家帶來有關golang中怎么反轉鏈表,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

問題:反轉一個單鏈表。
輸入: 1->2->3->4->5->NULL
輸出: 5->4->3->2->1->NULL

首先先認識一下鏈表這個數據結構:

鏈表節點中有兩個元素:

  • 指針

type ListNode struct {
    Val  int
    Next *ListNode
}

Next指向下一個節點

golang中怎么反轉鏈表

那么這道題其實就是把指針指向前一個節點

位置調換次數precurwhole
0nil1->2->3->4->51->2->3->4->5
11->nil2->-3>->4->52->3->4->5->1->nil
22->1->nil3->4->53->4->5->2->1->nil
33->2->1->nil4->54->5->3->2->1->nil
44->3->2->1->nil55->4->3->2->1->nil

可以看出來

  • pre是cur的最前面那位(pre = cur)

  • cur就是當前位的后面鏈表元素(cur = cur.Next)

  • cur.Next肯定是接pre(cur.Next = pre)

完整代碼:
package main

import "fmt"

//鏈表節點
type ListNode struct {
    Val  int
    Next *ListNode
}

//反轉鏈表的實現
func reversrList(head *ListNode) *ListNode {
    cur := head
    var pre *ListNode = nil
    for cur != nil {
        pre, cur, cur.Next = cur, cur.Next, pre //這句話最重要
    }
    return pre
}

func main() {
    head := new(ListNode)
    head.Val = 1
    ln2 := new(ListNode)
    ln2.Val = 2
    ln3 := new(ListNode)
    ln3.Val = 3
    ln4 := new(ListNode)
    ln4.Val = 4
    ln5 := new(ListNode)
    ln5.Val = 5
    head.Next = ln2
    ln2.Next = ln3
    ln3.Next = ln4
    ln4.Next = ln5

    pre := reversrList(head)
    fmt.Println(pre)
}

上述就是小編為大家分享的golang中怎么反轉鏈表了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

邵阳县| 洪洞县| 焦作市| 海南省| 梁山县| 望奎县| 山丹县| 沂南县| 五家渠市| 武邑县| 宁阳县| 镇康县| 莱州市| 华宁县| 卢湾区| 玉林市| 双峰县| 砚山县| 通江县| 米脂县| 华池县| 东方市| 双桥区| 常熟市| 密山市| 台南市| 萍乡市| 炉霍县| 万宁市| 临猗县| 都匀市| 黄山市| 云林县| 农安县| 安乡县| 介休市| 阿坝县| 澳门| 马鞍山市| 睢宁县| 仙游县|