資料結構與演算法 三 線性表基礎

2021-10-02 17:34:56 字數 2602 閱讀 7697

2.1 

線性表的定義和基本操作

線性表是有序且有限的

2.1.2

存在乙個唯一的被稱為「第乙個」的資料元素;

2.2.2

存在乙個唯一的被稱為「最後乙個」的資料元素;

2.2.3

除了第乙個元素外,每個元素均有唯一乙個直接前驅;

2.2.4

除了最後乙個元素外,每個元素均有唯一乙個直接後繼。

線性表(linear list)

:是由n(n>=0)

個資料元素(節點

)a1,a2,…,an

組成的有限序列

所有節點具有相同的資料型別

資料元素的個數

n稱為線性表的長度 當

n=0時,稱為空表 當

n>0

時,將非空的線性表記作:

(a1,a2,…,an) a1

稱為線性表的首節點,

an稱為尾節點

若線性表中的節點是按值

(或按關鍵字值

)由大到小

(或由小到大

)排列的,是有序的

線性表是一種相當靈活的資料結構,其長度可根據需要增長或縮短

對線性表的資料元素可以訪問、插入和刪除。

2.2

線性表的抽象資料結構定義

listlength判斷是否是空表的操作結果 l

是空表返回

0,否則返回其長度

·要將兩個集合以線性表

l表示,合併成乙個新的線性表

a = aub

,擴大線性表

la,將

b中存在而

a中不存在的元素插入la中

操作步驟:

從線性表

lb中檢視每個元素

getelem(lb,i)

—>e

la中進行訪問,判斷是否存在:

locelem(la,e,equal())

若不存在,則插入

listinsert(la , n+1, e)

在最後位置插入

基本操作:

初始化lc

為空表分別從la和

lb中取得當前元素ai和

bj;若ai<=bj,

則將ai

插入到lc

中,否則將

bj插入到

lc中;重複2

和3步,直到la或

lb中的元素被取完;將la

表或lb

表剩餘元素複製插入到

lc表中。

演算法實現:

void mergelist(list la , list lb , list &.lc)

while( j<= lb_len)}}

2.3 線性表的實現

2.3.1

順序儲存結構

(簡稱:順序表)

·線性表的邏輯順序與物理順序一致;

·資料元素之間的關係是以元素在計算機內「物理位置相鄰」來實現

線性表的第

i個元素的儲存位置是

loc(ai),

第i+1

個位置是

loc(ai+1) = loc(ai)+l 即

loc(ai+1) = loc(a1)+(i-1)*l

2.3.2

訪問結構:訪問結構是在乙個資料結構上對查詢查詢的時間效能的一種描述

隨機儲存結構:指在乙個資料結構上進行查詢的時間效能是

o(n)

,即查詢乙個資料元素的時間複雜度是線性的,與該元素在結構中的位置有關

·單鏈表是一種順序訪問結構。

陣列具有隨機儲存的特性,順序表還應該有表示線性表長度的屬性,所以用結構型別來定義順序表型別。

靜態結構:表一旦裝滿,不能擴充

/*靜態順序表的定義*/

#define maxsize 50

typedef structsqlist; //順序表的型別

動態結構:可以擴充,新的大小計入資料成員

maxsize

#define initsize 100

typedef structseqlist; //動態分配陣列順序表型別

具體的各項增刪改查的操作實現:
/*在順序表的第i個位置插入元素*/ 

bool listinsert(sqlist &l, int i, elemtype e)

/*刪除順序表第i個位置的元素並將被刪除的元素用引用變數e返回*/

bool listdelete(sqlist &l, int i , elemtype &e)

{ if(i<1||i>l.length)

return false;

e = l.data[i-1]; //第i個位賦值e

for(int j = i;j

資料結構與演算法筆記(三)線性表

是乙個由n的資料元素的有限序列,最常見的是鏈式表達也叫做線性鍊錶 鍊錶。再鍊錶中儲存的資料元素叫做節點,乙個節點儲存就是一條資料記錄。每個資料節點包括2部分,第乙個是資料值,第二個是指向下乙個節點的指標。在鍊錶的最前面,通常有乙個頭指標來指向第乙個節點,對鍊錶的最後乙個節點,沒有下乙個節點,它的指標...

資料結構與演算法(三) 線性表一

線性表 list 由零個或多個資料元素組成的有限序列 資料型別 是指一組性質相同的值的集合及定義在此集合上的一些操作的總稱 例如在c語言中按照取值不同,資料型別可以分為兩類 原子型別 不可以再分解的基本型別,例如整型,浮點型,字元型 結構型別 由若干個型別組合而成,是可以再分解的,例如整型陣列 抽象...

資料結構 三 線性表

零個或多個資料元素的有限序列 在較複雜的線性表中,乙個資料元素可以由諾幹個資料項組成 結構 define listsize 100 線性表的最大長度 typedef int datatype typedef struct seqlist datatype是資料元素型別,可以根據需要定義,可以使用se...