資料結構 順序表與單鏈表區別

2021-10-06 04:39:21 字數 1030 閱讀 1056

不定長順序表:

線性表分為順序表和煉表

順序表:

1.順序儲存,必須占用一片連續儲存單元;

可將順序表簡單理解為陣列,其空間是連續的儲存單元。 elem是指向順序表記憶體位址的指標,listsize是順序表總大小,length為當前存放有效資料個數。若在末尾插入資料8,只能在下標4處插入,不能中間空幾個儲存單元插入資料。

2.不便插入刪除資料(插入刪除位置及後面資料需要均向後或前移動一位),除了尾插尾刪(不用移動);

例如在上圖下標2處插入資料10,需要先將下標2以及後面所有資料均往後移乙個位置,把下標2出空出來,再插入10,時間複雜度為o(n)。

同理若刪除下標2的值,只需將下標2後面的值均往前移一位(下標2的值5直接被覆蓋),時間複雜度o(n)。

單鏈表:

1.鏈結儲存,不必占用一片連續儲存單元;

順序表空間連續,可以通過下標互相尋找資料。而鍊錶每個資料位置不一定連續,以單鏈表為例,它會有兩個空間,資料域和指標域,指標域指向下乙個資料結點的位址,就可以通過這個資料找到下乙個資料。

2.插入刪除資料方便(指標域改變即可),尾刪要找刪除位置前乙個(前驅)

鍊錶的插入和刪除用圖形容更好理解,例如:

刪除資料2:只需將第乙個結點(plist指向為頭結點,後面為第乙個結點),指標域中的100改為300,則直接從資料1指向資料3,忽略即刪除了資料2,如下圖

在資料1和2中間插入資料10,位址為400,步驟如下:

①.建立乙個新節點,資料域放10

②.新結點指標域放100(代表新結點下乙個資料為2),資料1對應節點的指標域放新結點的位址400(代表資料1下乙個資料為10)如下圖:

資料結構 順序表和單鏈表

typedef struct sqlist sqlist,psqlist bool isfull psqlist psq bool isempty psqlist psq void initsqlist psqlist psq 初始化 bool insert psqlist psq,int pos,...

資料結構與演算法一一順序表與單鏈表

一 資料結構是指資料元素的集合及元素間的相互關係和構造方法,結構是指元素之間的關係.在資料結構中,元素之間的相互關係稱為資料的邏輯結構.按照邏輯關係的不同將資料結構分為 線性結構和非線性結構,線性結構包括線性表 棧 佇列 串,非線性結構包括 樹 圖.資料元素及元素之間關係的儲存形式稱為儲存結構,可分...

資料結構 動態順序表,順序表與單鏈表的比較

seplistd.h pragma once include include includetypedef int datatype typedef struct seqlistd seqlistd,pseqlistd size t它是一種 整型 型別,裡面儲存的是乙個整數,就像int,long那樣...