山東中醫藥大學資料結構第二章線性表

2021-06-26 05:52:59 字數 3594 閱讀 6079

2.1 線性表的邏輯結構

2.1.1線性表的定義

線性表(linear list)簡稱表,是n(n≥0)個具有相同型別的資料元素的有限序列,線性表的資料元素的個數稱為線性表的長度。

2.1.2線性表的抽象資料型別的定義

adt list

data

線性表中的資料元素具有相同型別,

相鄰元素具有前驅和後繼關係

operation

initlist

前置條件:表不存在

輸入:無

功能:表的初始化

輸出:無

後置條件:建乙個空表

destroylist

前置條件:表已存在

輸入:無

功能:銷毀表

輸出:無

後置條件:釋放表所占用的儲存空間

length

前置條件:表已存在

輸入:無

功能:求表的長度

輸出:表中資料元素的個數                                             

後置條件:表不變

get

前置條件

:表已存在 輸入

:元素的序號i

功能:在表中取序號為i的資料元素

輸出:若i合法,返回序號為i的元素值,否則丟擲異常

後置條件:表不變

locate

前置條件:表已存在

輸入:資料元素x

輸出:若查詢成功,返回x在表中的序號,否則返回0

後置條件:表不變

insert

前置條件:表已存在

輸入:插入i;待插x

功能:在表的第i個位置處插入乙個新元素x

輸出:若插入不成功,丟擲異常

後置條件:若插入成功,表中增加乙個新元素

delete

前置條件:表已存在

輸入:刪除位置i

功能:刪除表中的第i個元素

輸出:若刪除成功,返回被刪元素,否則丟擲異常

後置條件:若刪除成功,表中減少乙個元素

empty

前置條件:表已存在

輸入:無

功能:判斷表是否為空

輸出:若是空表,返回1,否則返回0

後置條件:表不變

adt

說明:(1)線性表的基本操作根據實際應用是而定;

(2)複雜的操作可以通過基本操作的組合來實現;

(3)對不同的應用,操作的介面可能不同。

2.2線性表的順序儲存結構的實現

2.2.1順序表

線性表的順序儲存結構稱為順序表。

2.2.2順序表的實現、

1.建構函式

順序表的有參建構函式seqlist

template

seqlist::seqlist(datatype a[ ], int n)

2.求線性表的長度求線性表的長度只需返回成員變數length的值

3.查詢操作

(1)按位查詢 get

template

datatype seqlist::get( int i )

(2)按值查詢 locate

template

int seqlist::locate(datatype x)

4插入 insert

template

void seqlist::insert(int i, datatype x)

5.刪除 delete

template

datatype seqlist ::delete(int i)

6.遍歷操作 printlist

2.3線性表的鏈結儲存結構及實現

2.3.1單鏈表

尾標誌:

終端結點的指標域為空。

頭結點:在單鏈表的第乙個元素結點之前附設乙個型別相同的結點,以便空表和非空表處理統一。

2.3.2單鏈表的實現

template

class linklist

;

1.遍歷操作 printlist

template

void linklist:: printlist( )

} 2.單鏈表按位查詢操作

template

t linklist

::get(

inti

) if (!p) throw "

位置";

else returnp->data;

}3.單鏈表按值查詢演算法

template datatype

>

intlinklist

<

datatype

>:: locate(

datatype

x) return 0;//

退出迴圈表明查詢失敗

}4.單鏈表的實現——插入

template datatype

>

void

linklist

<

datatype

> :: insert(

inti

, datatype

x)if (p == null)throw "

位置";//

沒有找到第

i– 1

個結點else {

s = newnode;s->data = x;//

申請乙個結點

ss->next =p->next; p->next = s;//結點s

插入結點p之後

}}5.單鏈表的建構函式

6.無參建構函式

7.單鏈表刪除演算法

8.單鏈表析構函式演算法

2.3.3迴圈鍊錶

將單鏈表的首尾相接,將終端結點的指標域由空指標改為指向頭結點,構成

單迴圈鍊錶

,簡稱迴圈鍊錶

。2.3.4雙鏈表

雙鏈表:

在單鏈表的每個結點中再設定乙個指向其前驅結點的指標域



山東中醫藥大學資料結構第三章棧與佇列

3.1 棧 3.1.1棧的邏輯結構 1.棧的定義 棧是限定僅在表尾進行插入和刪除操作的線性表,允許插入和刪除的一端稱為棧頂,另一端稱為棧底,不含任何元素的棧稱為空棧。注意 棧只是對錶插入和刪除操作的位置進行了限制,並沒有限定插入和刪除操作進行的時間。2.棧的抽象資料型別定義 adt stack da...

第二章 資料結構 二

知識點 trie樹 並查集,堆的操作 高效地儲存和查詢字串集合的資料結構 const int n 100010 int son n 26 cnt n idx 插入 void insert char str cnt p 以這個點結尾的字元數 查詢 intquery char str return cn...

資料結構 第二章總結

線性表是由n 0 個資料元素組成的有限序列。我們學習了線性表上定義的基本運算 有構造空表 initlist l 求表長 listlength l 取結點 getnode l i 查詢 locatenode l x 插入 insertlist l x,i 刪除 delete l i 還學習了順序表 單...