(C++版)
順序表:
在內存中開闢固定且連續的空間進行增刪查改,其存儲密度爲1(也就是說存儲數據佔用的空間爲1)
注:c++中摒棄了realloc()函數【用於在原有數組空間上擴大倍數】,所以要是嫌空間不夠大,那就new一個新空間。
鏈表:
運用結構體數組開闢出data域和pointer域,存儲在一個單結點中,data用於存放數據,pointer用於存放指向下一節點的指針,在鏈表的開始設置頭結點(指針)用於指向第一個節點,使鏈表可以正常運行
二者優缺點比較:
- 順序表固定分配空間,所以適用於知道數據元素個數的問題
- 鏈表分配空間靈活,對於未知元素個數比較佔優,但其存儲密度較順序表大(每個結點還要單獨開闢空間存放指針,固定元素的話會造成浪費)
- 鏈表因爲可以不斷開闢空間,因而會造成存儲空間碎片化
- 對於CPU而言,一次性將所有開闢存儲空間都輸入進去的順序表相當而言更加高效。
- 查詢操作使用的比較頻繁時,使用順序表會好一些;在插入、刪除操作使用的比較頻繁時,使用單鏈表會好一些。