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...