陣列
陣列是個表,是個連續儲存的表。
在c裡面,首先我們知道陣列容量是固定的,使用前先分配大小,所以使用後就不是很方便調整容量;解決這個問題在c裡面一般是預先估計陣列的大小,然後用雙倍的容量建立陣列,是不是很麻煩?
正因為陣列是連續儲存和容量固定,所以注定陣列不方便進行增刪這種改變容量的操作。原因是假如在陣列的非末元素位置插入或者刪除元素都會導致整個陣列的移動,這個開銷是有風險的,尤其是在陣列的前面位置進行操作。這個問題的根源在於陣列必須是連續儲存的,所以問題不容易從根源解決,最好的解決方式就是找個非連續儲存的資料結構問題就好辦了,於是鍊錶這個非連續儲存的表就出現了。
2.鍊錶
鍊錶是個表,是個非連續儲存的表。
由於鍊錶的非線性儲存,所以鍊錶非常
適合進行插入和刪除操作;鍊錶的是有節點「鏈結」而成,每個節點有
資料域和指標域,指標域存放的是下乙個節點的首位址。如果只有只有指標域,就是單鏈表,如果有兩個指標域,那麼就是雙鏈表。
3.鍊錶和陣列的比較【特點決定優缺點】
陣列:優點:查詢效率比煉表高
缺點:不適合插入和刪除【動態儲存】
鍊錶:優點:適合插入和刪除【可動態儲存】
缺點:查詢效率低
陣列:可以隨機訪問
鍊錶:不支援隨機訪問,只能順序訪問
陣列:容量不易調整,可擴充套件性差
鍊錶:容量可以靈活調整,可擴充套件性好
動態陣列[arraylist]
雙向鍊錶[linklist]
陣列模擬鍊錶(靜態鍊錶)
為了模擬鍊錶的操作,設定了乙個date 資料 以及cur 相當於指標域 typedef struct list list s size size為陣列大小 我們用s size 1 cur來起頭指標的作用,指向鍊錶的第乙個元素的下標。因為不能直接malloc出來乙個空間,需要s 0 來儲存乙個空的陣列...
靜態鍊錶(陣列 鍊錶和靜態鍊錶的操作)
因為是線性表,不能只講鍊錶,所以今天提一下靜態鍊錶以及陣列 鍊錶 靜態鍊錶之間的對比。陣列基本結構沒得說,插入和刪除的操作也是有的 雖然看著不比較詭異 一般是動態分配乙個足夠長的,記錄有多少個元素後對這個個數進行加減,而不是每插入乙個就動態分配 其實這樣也行,要是不怕麻煩的話 另外在插入刪除操作之後...
鍊錶用途 陣列效率 鍊錶效率 鍊錶優缺點
三大資料結構的實現方式 資料結構 實現方式 棧 陣列 單鏈表佇列 陣列 雙端鍊錶 優先順序佇列 陣列 堆 有序鍊錶 雙端佇列 雙向鍊錶 陣列與鍊錶實現方式的比較 陣列與鍊錶都很快 如果能精確 棧或者佇列所需要容納的資料量 陣列 如果不能 鍊錶 陣列的效率 無序陣列 有序陣列 查詢比較次數o n 比較...