線性表(一) 順序儲存結構

2021-07-08 14:46:25 字數 1886 閱讀 3843

線性表(list):零個或多個資料元素的有限序列。

線性表的抽象資料型別:

adt 線性表(list)

data

線性表的資料物件集合為(a1,a2,......,an),每個元素的型別均為datatype。其中,除第乙個元素a1外,每乙個元素有且只有乙個直接前驅元素,除了最後乙個元素an外,每乙個元素有且只有乙個直接後繼元素。資料元素之間的關係是一對一關係。

operation

initlist(*l): 初始化操作,建立乙個空的線性表l。

listempty(l): 若線性表為空,返回true,否則返回false。

clearlist(*l): 將線性表清空。

getelem(l,i,*e):將線性表l中的第i個位置元素值返回給e。

listdelete(*l,i,*e):刪除線性表l中的第i個位置元素,並用e返回其值。

listlength(l):返回線性表l的元素個數。

endadt

線性表的順序儲存結構**:

#define ok 1

#define error 0

#define true 1

#define false 0

#define maxsize 50

typedef int elemtype;

typedef int status;

typedef structsqlist;

說白了,線性表的順序儲存結構就三個屬性:

1.儲存空間的起始位置:陣列data,它的儲存位置就是儲存空間的儲存位置。

2.線性表的最大儲存容量:陣列長度maxsize。

3.線性表的當前長度:length。

注:陣列的長度是存放線性表的儲存空間的長度,也可以理解為線性表的最大長度;而線性表的長度是線性表中資料元素的個數。線性表的長度應小於或等於陣列長度。

線性表的初始化,也就是將線性表長度置為0:

//初始化線性表

status initlist(sqlist *l)

查詢線性表中第i個元素,並返回值給e:

//查詢線性表中第i個元素,並返回值給e

status getelem(sqlist l,int i,elemtype *e)

查詢線性表中與e值相等的元素的位置(第i個元素):

//查詢線性表中與e值相等的元素的位置(第i個元素)

int locateelem(sqlist l,elemtype e)

}

判斷線性表是否為空:

//判斷線性表是否為空

bool listempty(sqlist l)

status listinsert(sqlist *l,int i,elemtype e)

l.data[i-1]=e;

return ok;}

刪除線性表的第i個元素,並用e返回其值:

//刪除線性表的第i個元素,並用e返回其值

status listdelete(sqlist *l,int i,elemtype *e)

return ok;

}

線性表的優缺點:

優點:1.無須為表示表中元素之間的邏輯關係而增加額外的儲存空間。

2.可以快速地訪問表中任一位置的元素。

缺點:1.插入和刪除操作需要移動大量元素。

2.當線性表長度變化較大時,難以確定儲存空間的容量。

3.造成儲存空間的「碎片」。

線性表線性(順序)儲存結構

實現順序表的曾刪查操作 元素結構體 define maxsize 100 線性表的最大長度 typedef int elemtype elemtype為線性表元素的型別 typedef struct sequenlist 插入操作 bool insertinseqlist sequenlist l,...

線性表的順序儲存 線性表的順序儲存結構

1,本文實現乙個線性表 2,順序儲存定義 1,線性表的順序儲存結構,指的是用一段位址連續的儲存單元依次儲存線性表中的資料元素 2,在 c 中可以用乙個陣列作為介質來儲存資料元素 3,設計思路 1,可以用一維陣列實現順序儲存結構 1,儲存空間 t m array 2,當前長度 int m length...

線性表 順序儲存結構

s1線性表的基本概念 1 有而且只有乙個 第一元素 2 有而且只有乙個 最後元素 3 除第一元素之外,其他元素都有唯一的直接前驅。4 除最後元素之外,其他元素都有唯一的直接後繼。s2計算公式 若第乙個元素的位址是a,每個元素占用的儲存空間為d,則陣列的第i個元素的位址可以用如下公式計算 loc i ...