帶頭節點鍊錶的操作使用講解

2021-09-27 01:27:42 字數 1813 閱讀 7544

鍊錶一共具有建立、增添、刪除、查詢四種基本操作,接下來會對這四種操作進行挨個講解。

在此之前首先提供鍊錶結點,初始化鍊錶,刪除鍊錶的**。

每乙個節點都包含有乙個資料以及指向下一結點的指標, 以及定義乙個鍊錶的頭指標;

typedef

int elemtype;

struct lnode

}*linklist;

bool init()

void

deleteall()

}

鍊錶的建立一共有兩種建立方法,分別是頭插法以及尾插法,頭插法就是每乙個輸入元素都依次插

到頭結點後,每插入乙個資料那麼之前的資料在鍊錶中的資料後移,所以遍歷時的遍歷順序與插入

順序相反,頭插法為反著存。尾插法則是每乙個輸入都插在鍊錶的末尾,那麼遍歷時的順序就與我

們的插入順序相同。

頭插法

我們的操作是建立乙個新的結點,使該節點的下乙個節點為頭結點的下乙個節點,即

p->next = linklist->next;然後再使頭節點的下乙個為該結點,順序不能顛倒,因為顛倒會損失原

本頭結點後面結點的位址。

**附上:

void

createlistu()

};

尾插法

乙個指向空即可,需要兩個指標,乙個指向上乙個被建立的結點,乙個指向新結點。

**附上:

void

createlistd()

q->next =

null;}

;

鍊錶的查詢是後幾個操作的基礎, 也很簡單, 我們根據每乙個結點的下乙個指標往後遍歷即可。

int

seach

(int t)

結點插入鍊錶我以插入在某個數的後面為例, 我們只需要獲取要插入結點的位址, 使該結點的下

乙個為被插入結點的下乙個, 然後令被插入結點的下乙個為該節點即可。

bool insert

(int t,

int r)

刪除操作我以刪除第t個數為例, 我們需要找到刪除結點的位置以及前一結點的位置, 然後使前

一結點的下乙個為刪除節點的下乙個, 刪除需要刪除的結點即可。

bool delete

(int t)

**附上:

#include

using namespace std;

const

int maxn =

1e5;

typedef

int elemtype;

struct lnode

}*linklist;

int n;

int t;

bool init()

void

createlistd()

q->next =

null;}

;void

createlistu()

};bool insert

(int t,

int r)

bool delete

(int t)

intseach

(int t)

void

deleteall()

}int

main()

帶頭節點的鍊錶

include include includetypedef int type typedef struct node node 建立乙個頭節點並將其指標返回 node node init 列印乙個鍊錶 void node display node head else printf n 找到第n個節...

帶頭節點鍊錶總結

帶頭節點鍊錶的建立 初始化乙個頭結點 包含指向下乙個節點的point next 執行初始化前判斷這個鍊錶是否有效 if null head 主要部分 新增節點分兩種情況 新增的是第乙個節點,直接讓頭結點指向現節點即可 需在鍊錶末尾新增節點,這時tail的作用就顯現出來,tail是上次錄入節點後的末尾...

不帶頭節點鍊錶

在本人之前的博文 帶頭節點的鍊錶 宿舍管理系統 中,本人介紹了鍊錶的基本知識點。那麼,在本人資料結構與演算法的專欄的開始,本人就來介紹下不帶頭節點鍊錶 由於本人在講解帶頭節點鍊錶的時候就已經講解過了鍊錶基本的增 刪 改 查 操作,所以,本人在這裡就不對這些重複的知識點進行講解了。本人在本篇博文中主要...