定義:
鍊錶是物理儲存單元上非連續、非順序的儲存結構
特點:
資料元素的邏輯順序是通過鍊錶中的指標鏈結次序實現的
概括:
鍊錶是一種資料儲存結構,通過指標指向定義它的鏈結次序。有點像區塊鏈。只不過乙個鍊錶的結構體擁有的元素比區塊鏈的區塊少
鍊錶的每個點稱為節點,乙個節點包括:
資料域指標域
鍊錶的優缺點
優點:
免在使用陣列時需要預先知道資料大小的缺點
充分利用計算機記憶體空間,實現靈活的記憶體動態管理
缺點:
失去了陣列隨機讀取的優點
空間開銷比較大
在之前的資料結構一章講過,鍊錶屬於線性表的一種。鍊錶的種類有:
乙個節點包括:
頭節點在鍊錶中的好處:
使用struct
關鍵字定義節點:
package main/*為鍊錶賦值並遍歷節點:定義節點
*/type node struct
package main插入節點import "fmt"/*
定義乙個遍歷鍊錶節點的方法
*/func shownode(p *node) }}
/*呼叫該方法
*/func main()
頭插法本質:
每次都在鍊錶的頭部插入資料,相當於修改新插入的節點都是頭節點。
實現:
只需要構造乙個頭指標,該指標只指向頭節點即可。每次插入節點都將該指標指向最新的節點
package main尾插法import (
"fmt")
/*定義節點
*/type node2 struct /*
定義遍歷列印方法:
傳入指標變數,每次修改指標變數進行讀取
*/func shownode2(p *node2) }
/*頭插法插入鍊錶
*/func main()
// 每次新增成功都將頭指標指向新增的節點
node.next = top
// 給頭指標重新賦值
top = &node}
// 呼叫列印節點方法
shownode2(top)
}
本質:
每次插入資料直接修改頭節點的指標值,將新加入的節點的指標賦值給頭節點
實現:
package main訪問元素,鍊錶沒有陣列高效。因為陣列的儲存位址是連續的。新增和刪除元素,鍊錶比陣列高效很多。因為鍊錶本身的位址就是不連續的。迴圈鍊錶import (
"fmt")
/*定義節點
*/type node2 struct /*
定義遍歷列印方法:
傳入指標變數,每次修改指標變數進行讀取
*/func shownode2(p *node2) }
/*頭插法插入鍊錶
*/func main()
// 每次新增成功都修改頭節點的指標域的值,將新插入的節點指標值賦值給頭節點
(*top).next = &node
// 重新給頭節點賦值
top = &node}
// 呼叫列印節點方法
shownode2(top)
}
本質:
鍊錶最後的節點的指標域指向頭節點的資料域。實現的時候就需要固定乙個頭節點
實現:
package main雙向鍊錶import "fmt"/*
定義節點
*/type node3 struct /*
迴圈列印指標節點內容方法
*/func shownode3(p *node3) }
/*雙指標方法定位迴圈鍊錶結構
*/func main()
// 每次修改移動指標的指標域指向新建的節點的位址
(*movenode).next = &node
// 重新給移動節點賦值
movenode = &node
if i == 9 }
shownode3(headtop)
}
本質:
鍊錶的乙個節點不止有後繼指標,還有前驅指標。前驅指標指向前乙個節點。後繼指標指向下乙個節點
特點:
優點:缺點:
package mainimport "fmt"/*
定義雙向鍊錶節點資訊
*/type node4 struct /*
遍歷節點的方法
*/func shownode4(p *node4)
// 將指標移向下乙個節點
p = p.next}}
/*遍歷雙向鍊錶
*/func main()
// 修改頭指標指向新建節點
(*headtop).next = &node
// 修改新建的節點的前驅指標指向頭指標
node.prev = headtop
// 更新頭指標
headtop = &node}
shownode4(headtop)
}// 此答案有誤
6 9 Go語言鍊錶操作
鍊錶是一種物理儲存單元上非連續 非順序的儲存結構,資料元素的邏輯順序是通過鍊錶中的指標鏈結次序實現的。使用鍊錶結構可以避免在使用陣列時需要預先知道資料大小的缺點,鍊錶結構可以充分利用計算機記憶體空間,實現靈活的記憶體動態管理。但是鍊錶失去了陣列隨機讀取的優點,同時鍊錶由於增加了結點的指標域,空間開銷...
C 之鍊錶操作
1 鍊錶題 乙個鍊錶的結點結構 struct node typedef struct node node 1 已知鍊錶的頭結點head,寫乙個函式把這個鍊錶逆序 intel node reverselist node head 鍊錶逆序 p2 next p1 head p2 return head ...
Go 雙向鍊錶
雙向鍊錶也叫雙鏈表,是鍊錶的一種,它的每個資料結點中都有兩個指標,分別指向直接後繼和直接前驅。所以,從雙向鍊錶中的任意乙個結點開始,都可以很方便地訪問它的前驅結點和後繼結點,相對於單鏈表來講 往前往後遍歷都很方便。相對於單向鍊錶優勢 插入資料 刪除資料 實現了基本的雙向鍊錶功能,包括元素的插入 刪除...