C語言資料結構鍊錶基礎(一)

2021-09-20 21:47:04 字數 1680 閱讀 9513

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

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

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

線性表的當前長度:length。

實現**:

#define maxsize 20

typedef

int elemtype;

//elemtype型別根據實際情況而定,這裡假設為int

typedef

struct

sqlist;

notes:陣列長度與線性表長度的區別:陣列長度是存放線性表的儲存空間的長度,儲存分配後這個量一般是不變的(也可以實現動態分配陣列,不過會帶來效能上的損耗);線性表長度是線性表中資料元素的個數,隨著插入和刪除操作的進行,是變化的,任意時刻線性表的長度應小於等於陣列長度。

思路:

1.若插入位置不合理,丟擲異常

2.若線性表長度大於等於陣列長度,則丟擲異常或動態增加容量

3.從最後乙個元素開始向前遍歷到第i個位置,分別將它們都向後移乙個位置

4.將要插入的元素填入位置i處

5.表長加1

**如下:

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

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

intlistinsert

(sqlist *l,

int i,

int e)

l->data[i -1]

= e;

//將新元素插入

思路:1.如果刪除位置不合理,丟擲異常

2.取出刪除元素

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

4.表長減1

**如下:

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

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

status listdelete

(sqlist *l,

int i,

int*e)

l->length--

;return1;

}

刪除和插入的平均時間複雜度:o(n)

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

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

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

資料結構基礎 鍊錶

1.鍊錶 表明這種資料結構是一種鏈式儲存結構 它不同於線性表的順序儲存結構。鍊錶的相鄰元素 在物理記憶體中不連續 所以這種結構可以充分利用一些系統的記憶體碎片來完成一些事務,即如果採用鍊錶結構有時可以解決當連續記憶體分配不足時的問題。鍊錶支援插入和刪除這兩種操作,並且 刪除 插入鍊錶頭部 尾部結點的...

資料結構基礎 鍊錶

typedef struct node node typedef struct node linklist 思路 獲取第i個資料 1.宣告乙個指標p指向鍊錶的第乙個結點,初始化j從1開始 2.當jgeteelm linklist l,int i,elemtype e if p j i e p dat...

資料結構(C語言) 單向鍊錶

c語言的單向鍊錶,就是在乙個將一些資料放在乙個結構體裡,然後在結構體裡加 struct next 的成員,用於指向下一結點。引用時,建立乙個臨時的結構體變數進行引用。如原結構體變數為 struct p 則 可建立 struct temp,然後 for temp p temp next null te...