大話資料結構(2)線性表

2021-10-04 17:23:11 字數 1808 閱讀 1836

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

tips: 1. 有序性 2. 有限性

在較複雜的線性表中,乙個資料元素可以由若干個資料項組成。

definition: 用一段位址連續的儲存單元依次儲存線性表的資料元素

線性表中第i+1個元素的儲存位置和第i個元素的位置關係式:(假設每個資料佔據c個儲存單元)

loc(ai+1)= loc(ai)+ c

第i個元素ai可由a1推導出:

loc(ai)= loc(a1)+ (i+1)*c

通過這個公式可算出線性表中任意位置的位址,而且都是相同的計算時間。因此對於每個線性表位置的存入或取出的時間複雜度為o(1)。

插入演算法的思路:(** 略)

刪除演算法的思路:(** 略)

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

如果刪除位置不合理,丟擲異常

如果線性表長度大於等於陣列長度,丟擲異常或動態增加容量

取出刪除元素

從最後乙個元素開始向前遍歷到第i個位置,分別向後移動乙個位置

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

插入元素至i位置

表長減一

表長加1

時間複雜度 o(n)

鏈式儲存結構的特點是用一組任意的儲存單元儲存線性表的資料,每個資料之間儲存位址不一定連續。前乙個資料記錄下後一資料的儲存位址,形成一條儲存鏈。

我們把儲存資料元素星系的域成為資料域,把儲存直接後繼位置的域成為指標域。這兩部分資訊組成資料元素ai的儲存映象,稱為結點(node)。

n個結點鏈結成乙個鍊錶,因為此鍊錶的每個結點只包含乙個指標域,因此叫單鏈表。

鍊錶中第乙個結點的儲存位置叫做頭指標,整個鍊錶的訪問從頭指標開始。之後的每乙個結點就是上乙個後繼指標指向的位置。

單鏈表結構指標定義

typedef

struct node

node;

typedef

struct node *linklist /* 定義linklist*/

獲取第i個資料的演算法思路:

//順序線性表l已存在, 1 <= i <= listlength(l)

//操作結果:用e返回l中第i個元素的值

status getelem

(linklist l,

int i, elemtype *e)if(

!p|| j>1)

*e = p-> data;

return ok;

}

大話資料結構 線性表 2

線性表的順序儲存結構最大的缺點是插入和刪除時需要移動大量資料,這顯然就需要消耗時間。本節討論的鏈式儲存結構可以很好滴解決這個問題。線性表的鏈式儲存結構的特點是用一組任意的儲存單元儲存線性表的資料元素,這些儲存單元可以使連續的,也可以是不連續的。這就意味著,這些資料元素可以存在記憶體未被占用的任意位置...

《大話資料結構》 線性表

created by pengxiangzhou on 2021 1 24.include ifndef c ds linear list h define c ds linear list h endif c ds linear list h 線性表 順序儲存結構 順序儲存結構的三個屬性 陣列da...

大話資料結構 線性表

線性表是零個或多個資料元素的有限序列。線性表的抽象資料型別定義如下 adt 線性表 list data 線性表的資料物件集合為,每個元素的型別均為datatype。其中,除第乙個元素a1外,每乙個元素有且只有乙個直接前驅元素,除了最後乙個元素an外,每乙個元素有且只有乙個直接後繼元素。資料元素之間的...