線性表:零個或多個資料元素的有限序列。
第乙個元素為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:
①無須為表示表中元素之間的邏輯關係增加額外的儲存空間;disadvantages:②訪問時間複雜度為o(1)o
(1
),訪問速度快;
①插入刪除移動大量元素;【鏈式儲存】指在計算機中用一組任意的儲存單元儲存線性表的資料元素(這組儲存單元可以是連續的,也可以是不連續的).。②線性表長度變化較大時,難以確定儲存容量;
③由於線性表的長度一般小於儲存陣列的長度,且又是開闢記憶體的連續空間,可能造成儲存的「碎片」;
【單鏈表】【靜態鍊錶】【迴圈鍊錶】【雙向鍊錶】
【單鏈表】除了儲存每個元素資料還要儲存與後繼元素的邏輯關係(直接後繼元素的位置),把儲存資料元素資訊域稱為資料域,把儲存直接後繼位置的域稱為指標域,這兩部分資訊組成的資料元素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...