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 還學習了順序表 單...