線性表思想小結

2021-07-04 00:17:23 字數 1496 閱讀 6806

一、鍊錶:單向鍊錶 單向迴圈鍊錶 雙向鍊錶 雙向迴圈鍊錶

(按表頭節點還可分:是否帶表頭節點的鍊錶)

(按照鍊錶的生成方式還可以分為動態鍊錶和靜態鍊錶)

操作:

1.新增節點

單向鍊錶為例

技巧:先處理要插入的節點,可以防止節點丟失

步驟:q ->next = p->next;

p ->next = q;

2.刪除節點

雙向鍊錶為例

步驟:p->next = q->next; // 將p節點與q後面的節點相連線

q->next->pre = p ;//將q節點後面節點的前驅指向p節點

free(q); //釋放要刪除的q節點

3.鍊錶 查詢

實質為對鍊錶的遍歷,看節點的資料域裡是否有匹配的資訊若有則退出,返回當前節點指標

a.對於雙向有序的鍊錶,可以考慮當前current指標的位置進行向前或著向後的遍歷查詢

b.對於雙向迴圈鍊錶,若大致可知資訊位於鍊錶的中後段即可通過前驅指標pre對鍊錶進行逆向遍歷。

4.鍊錶 銷毀

用迴圈進行銷毀

原理向相同:後判前刪

free(p); //當q為指向空的時候,刪除最後乙個p節點(其他鍊錶的處理方式相類似)

5.靜態鏈(游標實現法)表簡結

(用結構體陣列實現,用游標模擬指標的作用)

結構體定義:

typedef

struct static list;

二、堆的思想:

手動分配與釋放

三、棧的思想:first in last out

對資料進行處理由 棧頂 開始(即從一端來處理資料)

四、佇列的思想:first in first out

與棧不同的是,佇列的規則是:前刪後加:在前端進行刪除,後端進行新增(簡而言之,操作端有兩個,分別實現不同的作用)

——為了節省空間,迴圈佇列就來了:利用求餘的運算方式可將資料再次存入已空的佇列前頭(只是乙個普通的順序佇列儲存空間單元,利用求餘運算對其進行了重複的使用,從而達到一種迴圈的效果(此處要注意對佇列的判空處理))

線性表知識小結

一 順序表元素的插入 順序表的插入有兩種儲存方式,一種是順序表的形式,一種是鍊錶的形式。順序表的特點是它的元素按順序存放位址連續的儲存單元裡。想要把元素插入順序表的某乙個單元裡面,首先就要把想要插入的這個元素單元格的後面的所有的元素往後移,往後移的過程是從最後乙個元素開始往後移,接著前面所有需要移的...

今日小結線性表

1 線性表 順序儲存結構,鏈式儲存結構。鏈式儲存結構 單鏈表,靜態鍊錶,迴圈鍊錶,雙向鍊錶 2 在複雜的線性表中,乙個資料元素可以由若干個資料項組成 3 線性表的順序儲存結構,指的是用一段位址連續的儲存單元依次儲存線性表的資料元素。陣列 4 順序儲存結構的元素獲取,插入操作,刪除操作,5,線性表,優...

線性表知識點小結

線性表可以看作一種有序元素的集合,目的在於表示列表中相鄰兩元素之間的關係。注意以下幾點 有序表可以看作是空集合,或者可以寫成 a1,a2,a3,存在唯一的第乙個元素a1和唯一的最後乙個元素an 除了第乙個元素a1以外,每乙個元素都有唯一的先行者 除了最後乙個元素an外,每乙個元素都有唯一的後繼者 典...