線性表的順序儲存的結構**:
#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外,每乙個元素有且只有乙個直接後繼元素。資料元素之間的...