一、鏈表的概念
為了方便同學們理解,我畫了一個圖:

上條是單向鏈表,下面是雙向鏈表。
兩者區別是啥呢?
從查找速度來講,雙向的會更快些,但是缺點也是占用空間大些。
所以如果項目里面對空間要求高的話,就用前者,回頭用時間換空間。
按照邏輯結構來說,他們應該是一個挨著一個的,但是在實際存儲當中并沒有像這樣連續,可能會散落在各個內存區里面。
關于鏈表的作用就不在這里贅述了,感興趣的面向搜索引擎提問吧。
二、Go 里面的鏈表操作
go 的標準庫里面其實為我們提供了一個鏈表功能,在我們的 container/list 包里面。
所以很多時候我們不需要再手動實現,可以這樣使用:

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

比如插入到最后面,還是哪個的后面,感興趣的可以去詳細看下。
上面的代碼執行結果是:

二、一些常用操作
1、移動交換
假如我們需要調換 2 和 3 的位置:

我們可以使用他的 MoveAfter 方法進行移動。
執行結果:

2、插入
加入我們需要在 2 后面插入一個 2.5:

我們可以使用 InsertAfter 方法進行操作。
執行結果為:

更多的操作方法就不一一舉例了哈。
審核編輯:劉清
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
內存
+關注
關注
9文章
3210瀏覽量
76373 -
鏈表
+關注
關注
0文章
80瀏覽量
11061 -
go語言
+關注
關注
1文章
159瀏覽量
9779
發布評論請先 登錄
相關推薦
熱點推薦
C語言-鏈表(單向鏈表、雙向鏈表)
在前面章節已經學習了數組的使用,數組的空間是連續空間,數組的大小恒定的,在很多動態數據存儲的應用場景下,使用不方便;而這篇文章介紹的鏈表結構,支持動態增加節點,釋放節點,比較適合存儲動態數據的應用場景,而且鏈表的空間是存儲在堆上面的
Linux內核鏈表詳講(1)
大家好,是不是對linux內核很感興趣,有人是不是在跟著市面的教程,不管是收費的還是免費的,或多或少為大家講下內核鏈表分析,不知道有多少人真的在本質上給您有講.今天狄泰唐老師為你們免費講解,總共分3
發表于 07-10 18:23
玩轉C語言鏈表-鏈表各類操作詳解
,它稱為“表尾”,它的地址部分放一個“NULL”(表示“空地址”),鏈表到此結束。 鏈表的各類操作包括:學習單向鏈表的創建、刪除、 插入(無序、有序)、輸出、 排序(選擇、插入、冒泡
發表于 09-18 13:30
數據結構鏈表的基本操作
嵌入式學習基礎-數據結構鏈表的基本操作鏈表節點采用結構體的方式進行定義,下面是最基礎的定義只有一個數據data,*pNext用于指向下一個節點(若為尾節點則指向NULL)。//鏈表節點
發表于 12-22 08:05
淺析RT-Thread中對象容器與雙鏈表的操作
的操作RT-Thread的對象容器是依賴于雙鏈表(雙向循環鏈表)的,其雙鏈表的相關操作在文件rtservice.h中:其節點結構體為:str
發表于 05-18 14:23
了解Linux通用的雙向循環鏈表
在linux內核中,有一種通用的雙向循環鏈表,構成了各種隊列的基礎。鏈表的結構定義和相關函數均在include/linux/list.h中,下面就來全面的介紹這一鏈表的各種API。
發表于 05-07 10:44
?905次閱讀
單鏈表學習的總結(一)
想必大多數人和我一樣,剛開始學數據結構中的單鏈表還是蠻吃力的,特別是后面的雙鏈表操作更是如此。還有就是在實踐代碼操作時,你又會感到無從下手,
鏈表的代碼免費下載
=(LinkList)malloc(sizeof(LNode));//帶頭結點的鏈表
L->next=NULL;//L->data里面沒放東西
scanf("%d",&
發表于 05-16 14:25
?4次下載
詳細介紹鏈表在操作系統中定義和使用的方式
鏈表和數組是兩種不同的數據存儲方式。鏈表是一種物理存儲單元上非連續、非順序的存儲結構,數據元素的邏輯順序是通過鏈表中的指針鏈接次序實現的。
說說Go里面的鏈表操作
評論