單鏈表、迴圈鍊錶和雙向鍊錶的比較
查詢表頭結點(首元結點)
查詢表尾結點
查詢p的前驅結點
帶頭結點的單鏈表l
l->next
時間複雜度o(1
)o(1)
o(1)
從l->next
依次向後遍歷
時間複雜度o(n
)o(n)
o(n)
通過p->next
無法找到其前驅
帶頭結點的單迴圈鍊錶(僅設頭指標l)
l->next
時間複雜度o(1
)o(1)
o(1)
從l->next
依次向後遍歷
時間複雜度o(n
)o(n)
o(n)
通過p->next
可以找到其前驅
時間複雜度o(n
)o(n)
o(n)
帶頭結點的單迴圈鍊錶(僅設尾指標r)
r->next
時間複雜度o(1
)o(1)
o(1)
r時間複雜度o(n
)o(n)
o(n)
通過p->next
可以找到其前驅
時間複雜度o(n
)o(n)
o(n)
帶頭結點的雙向迴圈鍊錶l
l->next
時間複雜度o(1
)o(1)
o(1)
l->prior
時間複雜度o(1
)o(1)
o(1)
p->prior
時間複雜度o(1
)o(1)
o(1)
順序表和煉表的比較
鏈式儲存結構的缺點:
儲存密度:指結點資料本身所佔的儲存量和整個結點結構中所佔儲存量之比,即,
存 儲密
度=結點
資料占用
儲存空間
結點占用
的總空間
儲存密度= \frac
儲存密度=結
點占用的
總空間結
點資料佔
用儲存空
間
則其儲存密度為,812=
67\frac=67
128=6
7%。順序錶鏈表
空間儲存空間
預先分配,會導致空間閒置或溢位現象
動態分配,不會出現空間閒置或溢位現象
儲存密度
不用為表示結點的邏輯關係而增加額外的儲存開銷,儲存密度為1
需要借助指標來體現元素間的邏輯關係,儲存密度小於1
時間訪問元素
隨機訪問,按位置訪問元素。時間複雜度為o(1)。
順序訪問,按位置訪問元素。時間複雜度為o(n)。
插入、刪除
平均移動約表中一半元素,時間複雜度為o(n)
不需要移動元素,確定插入、刪除位置後,時間複雜度為o(1)
適用情況
1.表長變化不大,且能事先確定變化的範圍。 2.很少進行插入或刪除操作,經常按元素位置序號訪問資料元素
1.長度變化大。 2.頻繁進行插入或刪除操作
mysql 線性表 資料結構之線性表
概要 參考 大話資料結構 把常用的基本資料結構梳理一下。線性表定義 線性表 list 零個或多個資料元素的有限序列。若將線性表記為 a 1,cdots,a a i,a cdots,a n 則表中 a 領先於 a i a i 領先於 a 稱 a 是 a i 的直接前驅元素,a 是 a i 的直接後繼元...
資料結構之線性表
從現在開始,我們開始討論如何實現一些常用的資料結構和其中的一些經典演算法.等把資料結構講完了.我可能會繼續討論vc 的程式設計只是以及vs平台下的c c 開發等等.呵呵.我們進入正題吧.我在這裡就只實現線性表的連表結構.當然了,這裡實際上包含了好多知識.我希望大家在引用的時候.一定要領悟裡面的一些變...
資料結構之線性表
線性表是具有相同特性的資料元素的乙個有限序列。該序列中所含元素的個數叫做線性表的長度,用n表示,n 0。當n 0時,表示線性表是乙個空表,即表中不包含任何元素。設序列中第i i表示位序 個元素為ai 1 i n 線性表的一般表示為 a1,a2,ai,ai 1,an include include d...