資料結構與演算法筆記(三 單鏈表

2021-10-06 02:44:43 字數 1573 閱讀 4440

順序儲存:陣列

缺點:需要移動大量的元素,需要消耗大量的時間

鏈式儲存:鍊錶

特點:不連續儲存,使用指標,自適應記憶體大小

優點:解決了陣列不方便移動,插入,刪除元素的弊端

缺點:需要更加大的記憶體

指標回顧結點構成:元素 (data) + 指標 (next)

元素是儲存資料的儲存單元,可以是任何資料格式。

指標指示下乙個結點儲存位置,鍊錶的尾部next指向null

建構函式(定義)

typedef

struct node node,

*linkedlist;

//node表示結點的型別,linkedlist表示指向node結點型別的指標型別

初始化(應用)

linkedlist listinit()

l->next=

null

;//指標指向空

}

插入(頭插入法和尾插入法)

頭插法

簡單但逆序

p->data = x;

p->next = l->next;

l->next = p;

尾插法增加乙個尾指標 r

//單鏈表的建立2,尾插法建立單鏈表

linkedlist linkedlistcreatt()

r->next =

null

;return l;

}

中間插入1.查詢到第i個位置,

2.將該位置的next指標指向新結點,

3.新結點的next指標指向i+1位置的結點

linkedlist linkedlistinsert

(linkedlist l,

int i,

int x)

node *p;

//新結點p

p =(node *

)malloc

(sizeof

(node));

p->data = x;

p->next = pre->next;

//將p指向原結點

pre->next = p;

//插入p

return l;

}

遍歷

p=p->next;
刪除

直接使用前驅結點跳過要刪除的結點指向要刪除結點的後乙個結點

再將原有的結點通過free函式釋放掉

pre->next = p->next;

//刪除操作,將其前驅next指向其後繼。

free

(p);

單鏈表(演算法與資料結構)

鍊錶 單鏈表 為每個結點新增1個指標域,每個結點包括兩個域 資料域 存放元素本身資訊 指標域 存放後繼結點的儲存位置 指向鍊錶中第乙個結點的指標,稱為這個鍊錶的頭指標。最後乙個元素的指標不指向任何結點,稱為空指標,圖示中用 表示,在演算法中用 null 表示 帶頭結點的單鏈表 頭結點 可以不存資訊,...

資料結構與演算法 單鏈表

鍊錶是有序的列表,但是它在記憶體中是儲存如下 鍊錶是以節點的方式來儲存的 鍊錶的各個節點不一定是連續儲存的 鍊錶分帶頭結點的鍊錶和不帶頭結點的鍊錶 新增先建立乙個 head 頭結點,作用就是表示單鏈表的頭 後面我們每新增乙個結點,就直接加入到鍊錶的最後 遍歷 通過乙個輔助變數,幫助來遍歷整個鍊錶 第...

資料結構與演算法 單鏈表

單鏈表的建立 1.建立乙個head頭節點,作用就是表示單鏈表的頭 2.後面我們每新增乙個節點,就直接加入鍊錶的最後 定義heronode,每個heronode物件就是乙個節點 class heronode 為了顯示方法,重新tostring public string tostring 定義sing...