線性表(linear list)是由若干資料元素組成的有限序列。該序列中所有結點具有相同的資料型別。資料元素的個數稱線性表的長度。長度為0的線性表:空線性表。長的部位0的線性表:非空線性表。
設線性表l的元素以此為a1,a2,…,an,則記作l=(a1,a2,…,an)。a1是線性表的首結點,an是線性表的尾結點。a1,a2,…ai-1都是ai(2≦i≦n)的前驅,其中ai-1是ai的直接前驅;ai+1,ai+2,…an都是ai(1≦i ≦n-1)的後繼,其中ai+1是ai的直接後繼。
線性表的抽象資料型別定義:
adt list
資料關係:r =
基本操作:
initlist( &l )
構造乙個空的線性表l;
listlength( l )
初始條件:線性表l已存在;
操作結果:返回線性表的長度;
getelem( l, i, &e )
初始條件:線性表l已存在,1≦i≦listlength(l);
操作結果:用e返回l中第i個資料元素的值;
listinsert (& l, i, e )
初始條件:線性表l已存在,1≦i≦listlength(l) ;
listdelete(&l,i,&e)
初始條件:線性表l已存在,1≦i≦listlength(l) ;
操作結果:刪除線性表l中的第i個位置的元素,用e返回其值;
listempty(l)
初始條件:線性表l已存在;
操作結果:若l為空表,則返回true,否則返回false;
listclear(&l)
初始條件:線性表l已存在;
操作結果:將線性表l置為空表;
listlocate(l,e)
初始條件:線性表l已存在;
操作結果:返回線性表l中元素e的位置;
…} adt list
下一步詳細的介紹線性表的型別以及有關演算法的實現。 資料結構(線性表)
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...