順序表和單鏈表的優缺點對比:
順序表的優點,無需為表示表中元素之間的邏輯關係而增加額外的儲存空間;
可以快速的訪問表中的任意位置的元素。
順序表的缺點,插入後刪除操作需要移動大量元素;
當線性表長度不穩定時,儲存空間難確定,容易造成儲存空間碎片。
對於單鏈表
鏈式儲存即元素儲存的記憶體單元可以是不連續,分散的。對於元素間如何來維護他們的關係(即邏輯結構,每個元素的前驅和後繼。
即用到乙個指標域來儲存他和前驅或是後繼直接的關係。
如上面的是乙個單鏈表的指標結構,即每個元素中儲存了他的後繼元素的記憶體空間位址。
應用場景選擇
由上圖可以簡單的知道資料的常見的操作,增,刪,改,查時。
對於資料操作偏向於查和改時,順序儲存的速度是非常快的,而鍊錶的話,則必須從頭節點開始遍歷查詢。
但是涉及到插入或是刪除元素時,順序儲存每次操作為了維護順序,必須移動元素,而對於鍊錶來說,只需新增乙個儲存單元後,對其中幾個指標域中指標的指向做下改變就行。
tips1. 但是我們要注意的是, 表的插入和刪除操作其實有兩部分組成:遍歷找到第i個元素,然後刪除或插入。那其實順序表這步的時間複雜度為 o(1),
而單鏈表的時間複雜度為o(n),雖然後面的話順序表需要將i後面的元素都往後移動一位,話費的時間相對來說就是o(n),而單鏈表無需移動元素,
時間就為o(1)。看上去其實貌似扯平啊,這樣單鏈表相對於線性表的順序儲存結構來說沒什麼大的優勢。但是如果在第i點插入k個元素時,
那麼相對於鍊錶來說只要第一遍歷查詢到了第i個元素後,之後的操作基本是是o(1),而順序的操作的話,是每次都要移動n-i個元素,o(n),
效果就出來了。
tips2.而對於順序表,如果我們的插入和刪除操作,在不考慮儲存空間額分配這個死角的話(即儲存空間可以動態的申請,不考慮溢位),
都是在對最後的乙個元素進行操作,那不是也很好,即刪除和插入都是在表尾進行,那麼就不用移動大量元素了。
順序表和單鏈表的比較
順序表與鍊錶的比較 一 順序表的特點是邏輯上相鄰的資料元素,物理儲存位置也相鄰,並且,順序表的儲存空間需要預先分配。它的優點是 1 方法簡單,各種高階語言中都有陣列,容易實現。2 不用為表示節點間的邏輯關係而增加額外的儲存開銷。3 順序表具有按元素序號隨機訪問的特點。缺點 1 在順序表中做插入 刪除...
順序表和單鏈表的比較
通過了對第二章的學習,我知道了線性表儲存資料時主要通過順序表儲存結構和鏈結儲存結構。而鏈結儲存結構又以單鏈表為代表。下面我就說一下我通過老師的講解和書本上的知識說明一下我理解中的順序表和單鏈表。首先是順序表。順序表是用一段位址連續的儲存單元一次儲存線性表的資料元素。順序表是用一堆陣列來實現的,也可以...
資料結構 動態順序表,順序表與單鏈表的比較
seplistd.h pragma once include include includetypedef int datatype typedef struct seqlistd seqlistd,pseqlistd size t它是一種 整型 型別,裡面儲存的是乙個整數,就像int,long那樣...