資料結構與演算法 線性表之順序表與鍊錶結構

2021-10-19 04:26:11 字數 1121 閱讀 4181

線性表,全名為線性儲存結構

簡介:將具有「一對一」關係的資料「線性」地儲存到物理空間中,這種儲存結構就稱為線性儲存結構(簡稱線性表)。

注意:使用線性表的資料所使用的資料型別必須是一致的。

有兩種方式線性地儲存資料到記憶體中,即順序儲存鏈式儲存

下圖為順序儲存在記憶體中的儲存方式:

當需要從記憶體中將存放的值全部取出來時,只需要從第乙個位址依次遍歷即可取到。

下圖為鏈式儲存在記憶體中的儲存方式:

順序表與鍊錶各自的優勢與不足:

從空間利用率的角度考慮,由於順序表是在記憶體整塊整塊地存放的,而鍊錶每次申請的位址是隨機的,這種情況會產生很多的空間碎片。

從時間複雜度的角度考慮,由於順序表中的各個元素可以通過下標直接訪問,不需要從頭依次查詢,所以在執行查詢操作時順序表的時間複雜度是o(1);反觀鍊錶則需要從頭結點依次遍歷,它的時間複雜度為o(n);

另一方面對鍊錶進行增刪改操作時,比如需求是在arima中的a和r之間新增乙個字母v,只需要將原指向r的位址賦值給v的next,將v的位址賦值給a的next節點。

在對順序表執行相同的操作時,則需要在原r~a節點的位址依次往後移動,再在原來存放r節點的位址位置存放v節點。這種操作會移動大量的節點(也許只有幾個節點看不明顯,想象有乙個占用1g記憶體空間的程式(1g空間 ≈ 2^30 byte))

所以順序儲存的時間複雜度為o(n),鍊錶儲存的時間複雜度為o(1);

資料結構 演算法 線性表 順序表

演算法是解決特定問題的步驟的描述。在計算機中演算法是乙個有窮 或語句 指令 的有序集合。它確定了解決某乙個問題的乙個運算序列。對於問題的初始輸入,通過演算法有限步的執行,產生乙個或多個輸出。演算法是解決問題的思想方法 程式是計算機語言的具體實現 共同點 它們的語言不能有二義性 區別 演算法不依賴計算...

資料結構與演算法 線性表

概念 一種資料結構,每個結點最多只有乙個前驅結點和乙個後繼結點 類別 順序表 定長 鍊錶 變長 棧 棧頂刪除 彈棧 棧頂插入 壓棧 後進先出 lifo 佇列 隊頭刪除 出隊 隊尾插入 入隊 先進先出 fifo 線性表的抽象資料型別定義 c 1.template2.class list 棧的抽象資料型...

資料結構與演算法 線性表

n維向量 x1,x2,xn 是乙個長度為n的線性表 英文小寫字母表 a,b,c,z 是乙個長度為26的線性表 一年中的四個季節 春,夏,秋,冬 是乙個長度為4的線性表 矩陣是乙個比較複雜的線性表 學生情況登記表是乙個複雜的線性表 由若干資料項組成的資料元素稱為記錄 由多個記錄構成的線性表又稱為檔案 ...