線性表的順序儲存

2021-10-02 15:23:41 字數 1366 閱讀 4609

線性表是具有相同資料型別的n(n ≥ 0)個資料元素的有限序列,其中n為表長,當n = 0 時,線性表是乙個空表,若用l命名線性表,則其一般表示式為:

l = (a1,a2,a3,···,an)

式中,a1是唯一的「第乙個」資料元素,又稱為表頭元素;an是唯一的「最後」乙個元素,又稱為表尾元素。除第乙個元素外,每個元素有且僅有乙個直接前驅;除最後乙個元素外,每個元素有且只有乙個直接後繼。

假定線性表的元素型別為elemtype, 則線性表的順序儲存型別描述為

#define maxsize 50			

//定義線性表的最大長度

typedef

struct

sqlist;

//順序表的型別定義

一維陣列可以是靜態分配也可以是動態分配,靜態分配時,陣列的大小和空間事先定好了,一旦空間佔滿,再加入新的資料將會產生溢位,進而導致程式崩潰,故可採用動態分配的方法。

#define initsize 100		

//表長度的定義

typedef

struct

seqlist;

//動態分配陣列順序表的型別定義

(1)插入操作

在順序表 l 的第 i (1 <=i<=l.length+1) 個位置插入新元素,若 i 的位置不合法,則返回 false ,表示插入失敗;否則,將順序表的第 i 個元素機器後的所有元素後移乙個位置,騰出空來插入新元素 e, 順序表的長度再加 1, 返回true,表示插入成功。

bool

listinsert

(sqlist &l,

int i, elemtype e)

最好情況:在表尾插入(即 i = n +1),元素後移不執行,時間複雜度為o(1);

最壞情況:在表頭插入(即 i = 1),元素後移將執行 n 次,時間複雜度為 o(n);

線性表插入演算法的平均時間複雜度為o(n)。

(2)刪除操作

刪除順序表 l 中第 i 個(1 <=i<=l.length+1) 個位置的元素,若成功則返回 true, 並將被刪除的元素用引用變數 e 返回, 否則返回 false。

bool

listdelete

(sqlist &l,

int i, elemtype &e)

return0;

//退出迴圈,說明查詢失敗

}

最好情況:查詢的元素就在表頭,僅需要比較一次,時間複雜度為o(1);

最壞情況:查詢的元素在表尾(或不存在)時,需要比較 n 次,時間複雜度為 o(n);

線性表按值查詢的平均時間複雜度為o(n)。

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

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

線性表順序儲存

線性表順序儲存結構的建立 插入結點 刪除結點 就地逆置。include stdio.h include malloc.h typedef struct slist,list void init list 線性表初始化 void insert list s,int p 線性表插入 void delet...

線性表順序儲存

時間複雜度效率 o 1 o logn o n o nlogn o n 2 o n 3 o 2 n o n o n n 線性表順序儲存 線性表 順序儲存 include include define maxsize 1024 typedef int elementtype typedef struct...