大話資料結構筆記 線性表的順序儲存結構

2021-10-02 09:18:56 字數 1399 閱讀 1556

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

#define maxsize 20

typedef int elemtype; //elemtype型別根據實際情況而定

typedef struct

sqlist;

描述順序儲存結構需要三個屬性:

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

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

③線性表的當前長度:length。

資料長度與線性表長度的區別:

陣列的長度是存放線性表的儲存空間的長度,儲存分配後這個量一般是不變的。

線性表的長度是線性表中資料元素的個數,隨著線性表插入和刪除操作的進行,這個量是變化的。

在任意時刻,線性表的長度應該小於等於陣列的長度。

//初始條件:順序線性表l已經存在,1<=i<=listlength(l)

//用e返回l中第i個資料元素的值

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

插入演算法思路:

①如果插入位置不合理,丟擲異常;

②如果線性表長度大於等於陣列長度,則丟擲異常或增加容量;

③從最後乙個元素向前遍歷到第i個位置,分別將它們向後移動乙個位置;

④將要插入元素填入位置i處;

⑤表長加1。

//初始條件:順序線性表l已經存在,1<=i<=listlength(l)

//操作結結果:在l中第i個位置之前插入新的資料元素e,l的長度加1

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

l->data[i-1] = e;

l->length++;

return 1;

}

刪除演算法思路:

①如果刪除位置不合理,丟擲異常;

②取出刪除元素;

③從刪除元素位置開始遍歷最後乙個元素位置,分別將它們都向前移動乙個位置;

④表長減1。

//初始條件:順序線性表l已經存在,1<=i<=listlength(l)

//操作結果:刪除l的第i個資料元素,並用e返回其值,l的長度減1

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

l->length--;

return 1;

}

線性表的順序儲存結構的優缺點:

優點:可以快速地訪問表中任一位置的元素,無須為表示表中元素之間的邏輯關係而增加額外的儲存空間。

缺點:插入和刪除操作需要移動大量元素,當線性表長度變化較大時,難以確定儲存空間的容量,造成儲存空間「碎片」。

大話資料結構筆記 線性表

線性表 list 零個或多個資料元素的有限序列。重點 有順序 有限 例如有乙個線性表 a,b,c,d,z則 所有線性表元素的個數n n 0 為線性表的長度,n 0時,為空表。在複雜的線性表中,乙個資料元素可以是若干個資料項組成,例如花名冊。線性表的資料儲存結構,指的是用一段位址連續的儲存單元依次儲存...

《大話資料結構》 線性表

created by pengxiangzhou on 2021 1 24.include ifndef c ds linear list h define c ds linear list h endif c ds linear list h 線性表 順序儲存結構 順序儲存結構的三個屬性 陣列da...

大話資料結構 線性表

線性表是零個或多個資料元素的有限序列。線性表的抽象資料型別定義如下 adt 線性表 list data 線性表的資料物件集合為,每個元素的型別均為datatype。其中,除第乙個元素a1外,每乙個元素有且只有乙個直接前驅元素,除了最後乙個元素an外,每乙個元素有且只有乙個直接後繼元素。資料元素之間的...