順序表可以順序訪問,也可以隨機訪問,鍊錶只能從表頭順序訪問元素。
例如再第i個位置上執行訪問的操作,順序表僅虛一次訪問,而鍊錶則虛從表頭開始依次訪問i次。
採用順序儲存時,邏輯上相鄰的元素,對應的物理儲存位置也相鄰。而採用鏈式儲存時,邏輯上 相鄰的元素,物理儲存位置則不一定相鄰,對應的邏輯關係是通過指標鍊錶來表示的。
對於按值查詢,順序表無序時,兩者的時間複雜度均為o(n);順序表有序時,可採用折半查詢,此時的時間複雜度o(log2n)。
對於按序號查詢,順序表支援隨機訪問,時間複雜度僅為o(1),而鍊錶的平均時間複雜度為o(n)。順序表的插入、刪除操作,平均需要移動半個表長的元素。鍊錶的插入、刪除操作,只需修改相關節點的指標域即可。由於鍊錶的每個結點都帶有指標域,故而儲存密度不夠大。
順序儲存在靜態儲存分配情形下,一旦儲存空間裝滿就不能擴充,若再加入新元素,則會出現記憶體溢位,因此需要預先分配足夠大的儲存空間。預先分配過大,可能會導致順序表後部大量閒置;預先分配過小,又會造成溢位。動態儲存分配雖然儲存空間可以擴充,但需要移動大量元素,導致操作效率降低,而且若記憶體中沒有更打塊的連續儲存空間,則會導致分配失敗。鏈式儲存的結點空間只在需要時申請分配,只要記憶體有空間就可以分配,操作靈活、高效。
資料結構考研學習(1)順序表
1 插入操作 在i的位置上插入乙個新的元素x,演算法實現如下 void insert seqlist l,int i,elemtype x if i 1 i l.length 1 for j l.length j i j l.data j l.data j 1 l.data i 1 x l.leng...
考研筆記 資料結構之順序表
線性表定義 長度為n的有序元祖。當n 0時稱為空表。線性表的基本操作是插入和刪除。線性表的順序表示指的是用一組位址連續的儲存單元一次儲存線性表的資料元素。線性表的順序儲存結構是一種隨機訪問的儲存結構。線性表第i個資料元素ai的儲存位置是 loc ai loc a1 i 1 l l為每個元素需占用的儲...
資料結構 順序表學習筆記
順序表操作 typedef struct seqlist 初始化listinitiate l void listinitiate seqlist l 獲取當前線性表的資料個數listlength l void listlength seqlist l 插入資料元素listinsert l,i,x i...