小樓一閣的資料結構學習筆記(三 單鏈表)

2021-06-23 08:46:16 字數 2670 閱讀 2457

一、什麼是鍊錶

鍊錶是一種鏈式儲存結構,像鏈條一樣,是乙個節點乙個節點之間組成的,是一小塊一小塊組成的,不是乙個整塊的記憶體,每乙個小塊,下圖是乙個單鏈表。最簡單的最基礎的模型。每乙個小黃色方塊成為節點。資料結構分成鏈式儲存結構和非鏈式儲存結構。

二、順序表和煉表的區別

no.1:順序表是順序儲存結構,是申請的一整塊記憶體,在記憶體中是可以通過索引來找到其中的元素的,鍊錶不是,鍊錶申請很多小塊記憶體串到一起的。

就在此,可以使用很小的資源在鍊錶中插入和刪除

no.3:鍊錶和順序表貫穿整個資料結構之中,以後的很多種結構都是基於這兩種結構的。

三、鍊錶的初始化、增加、刪除、查詢

鍊錶的初始化需要作的是定義乙個空的頭結點,頭結點一般不存放資料,這可以避免很多問題。比如插入刪除是否需要考慮頭結點的問題。鍊錶的這四個操作學會之後就可以通過簡易的結合組合其他的功能。

鍊錶的節點:

鍊錶的結構體:

typedef struct list list;
初始化函式:

list* initlist(list *head)
這一句是先申請乙個頭結點讓他的next項指向空,因為鍊錶的最後一項都是指向空的。申請完如圖:

增加函式:

增加操作看圖首先是兩個節點

等待插入第三個申請完的節點p

插入了阿!!!!!首先把新節點的next指向後乙個節點(順序不能錯!!!)

然後拆了原來的把新的放進去!!!!讓後乙個節點的next指標指向新的那個,新的那個不就連上了~~~好簡單有木有!!!

連上了吧!!!下面分析**。

list* insertlist(list *head) 

return head;

}

非常簡單的插入。大家在插入鍊錶的時候可以這麼插入,我寫的是頭插法。從頭部第二個位置開始向裡面新增資料,新增完的資料是倒過來的。大家可以從尾部插入資料。這樣資料就是正過來的了。理解了上面的插入那麼你就能人一的插入~刪除和查抄函式(放在了一起,即查詢到要刪除的內容之後然後刪除掉):上圖刪除詳解:

首先三個節點:

刪了中間那個廢物~~

第一步讓前乙個指向下乙個:

然後釋放了p節點,就結束了

然後就完事了。

list* deletelist(list *head) 

if (p->next == null && p->data != e)

pr = p;   //倆節點找過程中向前移動,記住保持pr是p前乙個節點

p = p->next;

}printf("是否刪除節點:");

scanf(" %c",&c);

}return head;

}

單鏈表完成。

資料結構學習筆記 單鏈表

陣列優勢在於快速定位元素,對於讀操作多,寫操作少的場景,陣列更合適 鍊錶優勢在於快速的插入和刪除操作,如果頻繁的在尾部刪除和插入元素,用鍊錶更好 package com.cc.node public class nodedemo1 private node head private node las...

資料結構學習筆記 單鏈表

準備知識在另一篇部落格 單鏈表預備知識 建立單鏈表 頭插法 每次都是從頭結點插入乙個元素的方法,所以它是倒序的。struct lnode 建立結點結構體,由資料域和指標域組成 linknode void createlistf linknode l,elemtype a,int n 從陣列a中讀取資...

資料結構學習筆記 一

1 資料結構 眾所周知,電腦程式是對資訊進行的加工處理.在一般情況下,這些資訊並不是沒有組織,資訊之間往往具有重要的結構關係,這就是資料結構的內容.設有乙個 號碼薄,它記錄了n個人的名字和其相應的 號碼,假定按如下形式安排 a1,b1 a2,b2 an,bn 其中ai,bi i 1,2 n 分別表示...