資料結構 線性表

2021-08-18 12:22:57 字數 1814 閱讀 4140

線性表:零個或多個資料元素的有限序列。

第乙個元素為a1

a

1,每個元素的的所佔長度為

c c

,第i' role="presentation" style="position: relative;">i

i個元素ai

a

iloc

(ai)

=loc

(ai)

+(i−

1)∗c

l oc

(ai)

=loc

(ai)

+(i−

1)∗c

,可通過位址獲取相應元素,所以任意元素的讀取時間複雜度為o(1)o

(1

)

線性表的兩種儲存結構 【順序儲存】【鏈式儲存】

【順序儲存】指的是用一段位址連續的儲存單元依次儲存線性表的資料單元。

由於資料表的元素型別相同,可以用以一維陣列來實現順序儲存結構。

用陣列來實現線性表,陣列的長度(length,表示儲存空間的長度)和線性表的長度(size,線性表的資料元素個數)注意區分。

插入操作:

①插入位置不合理,丟擲異常;

②插入使線性表的長度大於陣列長度,要麼丟擲異常要麼動態增加容量;

③從最後乙個元素開始,遍歷到第

i i

個位置,分別將它們往後移乙個元素位置;

④將要插入的元素賦值給第

i' role="presentation" style="position: relative;">i

i個位置;

⑤表長加1。

刪除操作:

①刪除位置不合理,丟擲異常;

②取出刪除的元素;

③從刪除位置開始遍歷到最後乙個位置,分別將它們往前移乙個元素位置;

④表長減1。

【順序儲存結構的優缺點】

advantages:

①無須為表示表中元素之間的邏輯關係增加額外的儲存空間;

②訪問時間複雜度為o(1)o

(1

),訪問速度快;

disadvantages:

①插入刪除移動大量元素;

②線性表長度變化較大時,難以確定儲存容量;

③由於線性表的長度一般小於儲存陣列的長度,且又是開闢記憶體的連續空間,可能造成儲存的「碎片」;

【鏈式儲存】指在計算機中用一組任意的儲存單元儲存線性表的資料元素(這組儲存單元可以是連續的,也可以是不連續的).。

【單鏈表】【靜態鍊錶】【迴圈鍊錶】【雙向鍊錶】

【單鏈表】除了儲存每個元素資料還要儲存與後繼元素的邏輯關係(直接後繼元素的位置),把儲存資料元素資訊域稱為資料域,把儲存直接後繼位置的域稱為指標域,這兩部分資訊組成的資料元素ai

a

i的儲存映像,稱為結點

n n

個結點鏈結成乙個鍊錶,即為線性表的鏈式儲存結構,每個結點只包含乙個指標域,故叫做單鏈表

鍊錶中第乙個結點的儲存位置叫做頭指標

有時會在第乙個結點前附設乙個結點,稱為頭結點,其資料域為空,指標域儲存第乙個結點位置。

資料結構(線性表)

1.試寫一演算法,在無頭結點的動態單鏈表上實現線性表操作insert l,i,b 並和在帶頭結點的動態單鏈表上實現相同操作的演算法進行比較。status insert linklist l,int i,int b 在無頭結點鍊錶l的第 i個元素之前插入元素 belse insert 2.已知線性表中...

資料結構 線性表

參考 一 線性表 順序表 單鏈表 迴圈鍊錶 雙鏈表 順序表 1.表的初始化 void initlist seqlist l 2.求表長 int listlength seqlist l 3.取表中第i個結點 datatype getnode l,i 4.查詢值為x的結點 5.插入 具體演算法描述 v...

資料結構 線性表

線性表是最基礎的一種資料結構,這樣的資料物件包含的資料元素具有一對一的前驅後繼關係。按其邏輯儲存方式的不同可分為兩類線性表 順序表和鏈式表。其中鏈式表又可分為線性鍊錶 迴圈鍊錶和雙向鍊錶。下面分別介紹下這幾種線性表的資料結構 1.順序表 typedef struct sqlist 插入演算法 i到n...