資料結構:線性表
線性表( linear list )的定義
是零個或多個具有相同型別的資料元素的有限序列。
資料元素的個數定義為線性表的 長度 。長度等於零時稱為空表,乙個非空表通常記為
l = ( a 1 , a 2 ,……, a n )
線性表的抽象資料型別定義:
adt list
data
線性表中的資料元素具有相同型別,相鄰元素具有前驅和後繼關係
operation
initlist
前置條件:線性表不存在
輸入:無
功能:線性表的初始化
輸出: 無
後置條件:乙個空的線性表
destroylist
前置條件:線性表已存在
輸入:無
功能:銷毀線性表
輸出:無
後置條件:釋放線性表所占用的儲存空間
length
前置條件:線性表已存在
輸入:無
功能:求線性表的長度
輸出: 線性表中資料元素的個數
後置條件:線性表不變
get
前置條件:線性表已存在
輸入:元素的序號 i
輸出:如果序號合法,返回序號為 i 的元素值,否則丟擲異常
後置條件:線性表不變
locate
前置條件:線性表已存在
輸入:資料元素 x
輸出:如果查詢成功,返回元素 x 在表中的序號,否則返回 0
後置條件:線性表不變
insert
前置條件:線性表已存在
輸入:插入位置 i ;待插元素 x
輸出:若插入不成功,丟擲異常
後置條件:若插入成功,表中增加了乙個新元素
delete
前置條件:線性表已存在
輸入:刪除位置 i
功能:刪除線性表中的第 i 個元素
輸出:若刪除成功,返回被刪元素,否則丟擲異常
後置條件:若刪除成功,表中減少了乙個元素
empty
前置條件:線性表已存在
輸入:無
功能:判斷線性表是否為空表
輸出:若是空表,返回 1 ,否則返回 0
後置條件:線性表不變
printlist
前置條件:線性表已存在
輸入:無
功能:按位置的先後次序依次輸出線性表中的元素
輸出:線性表的各個資料元素
後置條件:線性表不變
對adt的說明:
⑴ 對於不同的應用,線性表的基本操作是不同的。並非任何時候都需要以上操作,有些問題只需要一部分上述操作;
⑵ 上述操作是最基本的,對於實際問題中涉及的關於表的更複雜的操作,可以用這些基本操作的組合來實現;
⑶ 對於不同的應用,上述操作的介面可能不同,例如刪除操作,若要求刪除表中值為 x 的元素,則 delete 操作的輸入引數就不能是位置而應該是元素值。
資料結構(線性表)
1.試寫一演算法,在無頭結點的動態單鏈表上實現線性表操作insert l,i,b 並和在帶頭結點的動態單鏈表上實現相同操作的演算法進行比較。status insert linklist l,int i,int b 在無頭結點鍊錶l的第 i個元素之前插入元素 belse insert 2.已知線性表中...
資料結構 線性表
參考 一 線性表 順序表 單鏈表 迴圈鍊錶 雙鏈表 順序表 1.表的初始化 void initlist seqlist l 2.求表長 int listlength seqlist l 3.取表中第i個結點 datatype getnode l,i 4.查詢值為x的結點 5.插入 具體演算法描述 v...
資料結構 線性表
線性表是最基礎的一種資料結構,這樣的資料物件包含的資料元素具有一對一的前驅後繼關係。按其邏輯儲存方式的不同可分為兩類線性表 順序表和鏈式表。其中鏈式表又可分為線性鍊錶 迴圈鍊錶和雙向鍊錶。下面分別介紹下這幾種線性表的資料結構 1.順序表 typedef struct sqlist 插入演算法 i到n...