大話資料結構 第三章線性表(1)

2021-10-09 12:58:27 字數 1641 閱讀 8745

######僅作為筆記

線性表(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 線性表 線性表的資料物件集合為,每乙個元素的資料...