資料結構 線性表

2021-09-27 07:43:14 字數 1682 閱讀 5202

資料結構:線性表

線性表( 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...