0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

說(shuō)說(shuō)Go里面的鏈表操作

冬至配餃子 ? 來(lái)源:GoLang全棧 ? 作者:小錕哥哥 ? 2022-08-17 11:07 ? 次閱讀

一、鏈表的概念

為了方便同學(xué)們理解,我畫(huà)了一個(gè)圖:

poYBAGL8WoeAayNXAAClnjzwFos168.png

上條是單向鏈表,下面是雙向鏈表。

兩者區(qū)別是啥呢?

從查找速度來(lái)講,雙向的會(huì)更快些,但是缺點(diǎn)也是占用空間大些。

所以如果項(xiàng)目里面對(duì)空間要求高的話,就用前者,回頭用時(shí)間換空間。

按照邏輯結(jié)構(gòu)來(lái)說(shuō),他們應(yīng)該是一個(gè)挨著一個(gè)的,但是在實(shí)際存儲(chǔ)當(dāng)中并沒(méi)有像這樣連續(xù),可能會(huì)散落在各個(gè)內(nèi)存區(qū)里面。

關(guān)于鏈表的作用就不在這里贅述了,感興趣的面向搜索引擎提問(wèn)吧。

二、Go 里面的鏈表操作

go 的標(biāo)準(zhǔn)庫(kù)里面其實(shí)為我們提供了一個(gè)鏈表功能,在我們的 container/list 包里面。

所以很多時(shí)候我們不需要再手動(dòng)實(shí)現(xiàn),可以這樣使用:

poYBAGL8WpiAANn-AABJEHaycYc192.png

他為我們提供了很多方法可以使用:

poYBAGL8Wq2Ae13JAAE9uaBUyFE162.png

比如插入到最后面,還是哪個(gè)的后面,感興趣的可以去詳細(xì)看下。

上面的代碼執(zhí)行結(jié)果是:

pYYBAGL8Wr6AIfGfAAARRAc53-E525.png

二、一些常用操作

1、移動(dòng)交換

假如我們需要調(diào)換 2 和 3 的位置:

poYBAGL8WtOAatL6AABTjxFNtrA286.png

我們可以使用他的 MoveAfter 方法進(jìn)行移動(dòng)。

執(zhí)行結(jié)果:

poYBAGL8WuaAJdVcAAASpN4J_bI783.png

2、插入

加入我們需要在 2 后面插入一個(gè) 2.5:

pYYBAGL8WviAbm3CAABdl-bGMqA676.png

我們可以使用 InsertAfter 方法進(jìn)行操作。

執(zhí)行結(jié)果為:

poYBAGL8WxSAJabLAAAWrD_wDuE050.png

更多的操作方法就不一一舉例了哈。



審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    8

    文章

    2903

    瀏覽量

    73547
  • 鏈表
    +關(guān)注

    關(guān)注

    0

    文章

    80

    瀏覽量

    10520
  • go語(yǔ)言
    +關(guān)注

    關(guān)注

    1

    文章

    156

    瀏覽量

    8996
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    C語(yǔ)言-鏈表(單向鏈表、雙向鏈表)

    在前面章節(jié)已經(jīng)學(xué)習(xí)了數(shù)組的使用,數(shù)組的空間是連續(xù)空間,數(shù)組的大小恒定的,在很多動(dòng)態(tài)數(shù)據(jù)存儲(chǔ)的應(yīng)用場(chǎng)景下,使用不方便;而這篇文章介紹的鏈表結(jié)構(gòu),支持動(dòng)態(tài)增加節(jié)點(diǎn),釋放節(jié)點(diǎn),比較適合存儲(chǔ)動(dòng)態(tài)數(shù)據(jù)的應(yīng)用場(chǎng)景,而且鏈表的空間是存儲(chǔ)在堆上面的
    的頭像 發(fā)表于 09-09 11:30 ?1554次閱讀

    Linux內(nèi)核鏈表詳講(1)

    大家好,是不是對(duì)linux內(nèi)核很感興趣,有人是不是在跟著市面的教程,不管是收費(fèi)的還是免費(fèi)的,或多或少為大家講下內(nèi)核鏈表分析,不知道有多少人真的在本質(zhì)上給您有講.今天狄泰唐老師為你們免費(fèi)講解,總共分3
    發(fā)表于 07-10 18:23

    Linux內(nèi)核的鏈表操作

    Linux內(nèi)核的鏈表操作本文詳細(xì)分析了 2.6.x 內(nèi)核中鏈表結(jié)構(gòu)的實(shí)現(xiàn),并通過(guò)實(shí)例對(duì)每個(gè)鏈表操作接口進(jìn)行了詳盡的講解。一、
    發(fā)表于 08-29 11:13

    玩轉(zhuǎn)C語(yǔ)言鏈表-鏈表各類操作詳解

    ,它稱為“表尾”,它的地址部分放一個(gè)“NULL”(表示“空地址”),鏈表到此結(jié)束?! ?b class='flag-5'>鏈表的各類操作包括:學(xué)習(xí)單向鏈表的創(chuàng)建、刪除、 插入(無(wú)序、有序)、輸出、 排序(選擇、插入、冒泡
    發(fā)表于 09-18 13:30

    STM32里面的位帶操作是什么意思?

    為什么STM32里面會(huì)有位帶操作?STM32里面的位帶操作是什么意思?
    發(fā)表于 12-15 06:23

    數(shù)據(jù)結(jié)構(gòu)鏈表的基本操作

    嵌入式學(xué)習(xí)基礎(chǔ)-數(shù)據(jù)結(jié)構(gòu)鏈表的基本操作鏈表節(jié)點(diǎn)采用結(jié)構(gòu)體的方式進(jìn)行定義,下面是最基礎(chǔ)的定義只有一個(gè)數(shù)據(jù)data,*pNext用于指向下一個(gè)節(jié)點(diǎn)(若為尾節(jié)點(diǎn)則指向NULL)。//鏈表節(jié)點(diǎn)
    發(fā)表于 12-22 08:05

    淺析RT-Thread中對(duì)象容器與雙鏈表操作

    操作RT-Thread的對(duì)象容器是依賴于雙鏈表(雙向循環(huán)鏈表)的,其雙鏈表的相關(guān)操作在文件rtservice.h中:其節(jié)點(diǎn)結(jié)構(gòu)體為:str
    發(fā)表于 05-18 14:23

    了解Linux通用的雙向循環(huán)鏈表

    在linux內(nèi)核中,有一種通用的雙向循環(huán)鏈表,構(gòu)成了各種隊(duì)列的基礎(chǔ)。鏈表的結(jié)構(gòu)定義和相關(guān)函數(shù)均在include/linux/list.h中,下面就來(lái)全面的介紹這一鏈表的各種API。
    發(fā)表于 05-07 10:44 ?628次閱讀

    鏈表學(xué)習(xí)的總結(jié)(一)

    想必大多數(shù)人和我一樣,剛開(kāi)始學(xué)數(shù)據(jù)結(jié)構(gòu)中的單鏈表還是蠻吃力的,特別是后面的鏈表操作更是如此。還有就是在實(shí)踐代碼操作時(shí),你又會(huì)感到無(wú)從下手,
    的頭像 發(fā)表于 12-24 17:35 ?3258次閱讀

    鏈表的代碼免費(fèi)下載

    =(LinkList)malloc(sizeof(LNode));//帶頭結(jié)點(diǎn)的鏈表 L->next=NULL;//L->data里面沒(méi)放東西 scanf("%d",&
    發(fā)表于 05-16 14:25 ?4次下載

    鏈表的基本操作

    回看了一下以前寫的鏈表操作,確實(shí)有點(diǎn)復(fù)雜不利于初學(xué),這篇文章就換個(gè)寫法,簡(jiǎn)單明了的介紹鏈表操作。
    的頭像 發(fā)表于 12-13 10:11 ?1165次閱讀

    鏈表的基礎(chǔ)知識(shí)

    的知識(shí)詳細(xì)地?cái)⑹?,所涉及?b class='flag-5'>鏈表類型包括:?jiǎn)?b class='flag-5'>鏈表,雙鏈表,循環(huán)鏈表,每個(gè)鏈表操作涉及到創(chuàng)建
    的頭像 發(fā)表于 01-20 17:00 ?933次閱讀
    <b class='flag-5'>鏈表</b>的基礎(chǔ)知識(shí)

    詳細(xì)介紹鏈表操作系統(tǒng)中定義和使用的方式

    鏈表和數(shù)組是兩種不同的數(shù)據(jù)存儲(chǔ)方式。鏈表是一種物理存儲(chǔ)單元上非連續(xù)、非順序的存儲(chǔ)結(jié)構(gòu),數(shù)據(jù)元素的邏輯順序是通過(guò)鏈表中的指針鏈接次序?qū)崿F(xiàn)的。
    的頭像 發(fā)表于 02-22 10:06 ?1081次閱讀

    介紹Go里面經(jīng)常使用到的命令行工具

    優(yōu)秀的工具配合熟練的使用,往往可以讓開(kāi)發(fā)效率大幅度提升,本小節(jié)介紹 Go 里面經(jīng)常使用到的命令行工具。
    的頭像 發(fā)表于 05-22 16:58 ?1161次閱讀
    介紹<b class='flag-5'>Go</b><b class='flag-5'>里面</b>經(jīng)常使用到的命令行工具

    鏈表和雙鏈表的區(qū)別在哪里

    。 上面的三幅圖對(duì)于理解鏈表的插入、刪除很重要,看代碼的時(shí)候要對(duì)著看。 實(shí)際中經(jīng)常使用的一般為帶頭雙向循環(huán)鏈表,下面是一個(gè)雙向循環(huán)鏈表的 demo,是最簡(jiǎn)單的情況。
    的頭像 發(fā)表于 07-27 11:20 ?1491次閱讀
    單<b class='flag-5'>鏈表</b>和雙<b class='flag-5'>鏈表</b>的區(qū)別在哪里