######僅作為筆記
線性表(list):零個或多個資料元素的有限序列。
若線性表記為(a1, … , ai-1 , ai , ai+1 , … , an),則表中 ai-1 領先於 ai,ai 領先於 ai+1,稱 ai-1 是 ai 的直接前驅元素,ai+1是 ai 的直接後繼元素。當 i = 1, 2, … , n-1 時,ai 有且僅有乙個直接後繼, 當 i = 2, … , n 時,ai 有且僅有乙個直接前驅。
線性表元素的個數 n ( n>=0 ) 定義為線性表的長度,當 n=0 時,稱為空表。
線性表的抽象資料型別定義如下:
adt 線性表(list)
data
線性表的資料物件集合為,每個元素的型別均為 datatype。其中,除第乙個元素a1外,每乙個元素有且只有乙個直接前驅元素,出了最後乙個元素an外,每乙個元素有且僅有乙個直接後繼元素。資料元素之間的關係是一對一的關係。
operation
initlist
(*l)
: 初始化操作,建立乙個空的線性表l。
listempty
(l): 若線性表為空,返回true,否則返回false。
clearlist
(*l)
: 將線性表清空。
getelem
(*l)
: 將線性表l中的第i個位置元素返回給e。
listinsert
(*l,i,e)
listdelete
(*l,i,
*e): 刪除線性表l中第i個位置元素,並用e返回其值。
listlength
(l): 返回線性表l的元素個數。
endadt
線性表的順序儲存結構,指的是用一段位址連續的儲存單元依次儲存線性表的資料元素。
線性表的順序儲存結構**:
#define maxsize 20
/*儲存空間初始分配量*/
typedef
int elemtype;
/*elemtype型別根據實際情況而定,這裡假設為int*/
typedef
struct
sqlist;
位址計算方法:
loc(ai+1) = loc(ai) + c
loc(ai) = loc(a1) + (i-1) * c
*注loc表示位址獲取函式,c為乙個資料元素占用的儲存單元數
順序儲存結構的獲得元素操作
#define ok 1
#define error 0
#define true 1
#define false 0
typedef
int status;
/* status是函式的型別, 其值是函式結果狀態**,如ok等*/
/*初始條件:順序線性表l已存在,1 <= i <= listlength(l) */
/*操作結果: 用e返回l中第i個資料元素的值*/
status getelem
(sqlist l,
int i, elemtype *e)
大話資料結構第三章 線性表
1.線性表 list 零個或多個資料元素的有限序列。線性元素的個數n n 0 定義為線性表的長度,當n 0時,稱為空表。2.在較複雜的線性表中,乙個資料元素可以由若干個資料項組成。4.描述順序儲存結構需要三個屬性 儲存空間的起始位置 陣列data,它的儲存位置就是儲存空間的儲存位置。線性表的最大儲存...
大話資料結構第三章 線性表
1.線性表 list 零個或多個資料元素的有限序列。線性元素的個數n n 0 定義為線性表的長度,當n 0時,稱為空表。2.在較複雜的線性表中,乙個資料元素能夠由若干個資料項組成。4.描寫敘述順序儲存結構須要三個屬性 儲存空間的起始位置 陣列data,它的儲存位置就是儲存空間的儲存位置。線性表的最大...
大話資料結構(第三章 線性表)
線性表list 零個或者多個資料元素的有限序列。特點 是乙個序列,有順序 線性表是有限的 線性表中,乙個元素的前面乙個元素稱之為直接前驅元素,後面的元素稱之為直接後繼元素。線性表元素的個數為線性表的長度,沒有則是空表。1 線性表的抽象資料型別。adt 線性表 線性表的資料物件集合為,每乙個元素的資料...