C 單鏈表的實現

2021-10-04 10:42:25 字數 3496 閱讀 3484

四、建立節點:

五、新增新節點

六、插入新節點

七、刪除乙個節點

八、**實現

文章末尾有具體的c++單鏈表**,你可以複製該**並結合文章進行理解

此文章僅在c++中實現,如果要使用c語言的話可能需要動態宣告空間。

單鏈表顧名思義,就是一條鏈,只不過這鏈條上面存在著一些節點,

節點中又能夠儲存資料和下乙個或者上乙個節點的位址

,下圖可以更好地理解單鏈表的構成。

通常來說,不會對鍊錶的第乙個節點的資料進行操作,第乙個節點即頭指標,頭指標主要是用來標誌煉表頭,末尾的節點的指標需要指向空,不然沒法判斷鍊錶什麼時候結束。

如果是迴圈鍊錶的話,則是將末尾節點指向頭指標,判斷結束則是看移動到某個節點時,當前節點的next指標是不是指向了煉表頭。

鍊錶的建立有幾種方式,此處僅介紹其中的一種單鏈表建立和使用的方法。

node可以自己命名,指標域是固定的寫法,幾個指標就是幾鍊錶

當你需要新的指標或是新的資料時,就直接在花括號內進行新增即可。

typedef

struct node

lnode,

*list;

//lnode為一種型別

//list為lnode型別的指標

需要宣告乙個具體單鏈表,才能進行使用

list l;

//宣告乙個鍊錶l

lnode *l;

//宣告乙個鍊錶l

鍊錶當中的節點不是直接就能夠生成的,需要先建立好節點才能夠使用那個節點。

其中的nodetypedef struct node中自定義名稱。

list p;

//宣告

p=new node;

//分配空間

p->data=

233;

//資料域賦值

lnode *p;

//宣告

p=new node;

//分配空間

p->data=

233;

//資料域賦值

當宣告好單鏈表的表名,並建立了乙個節點之後,就需要將頭指標指向那個建立的節點,從而之後需要讀取節點資訊的時候能夠從頭指標跳到該節點。

假設now表示為末尾節點,如果鍊錶中僅有頭節點的話,鍊錶名l即為now

此處為在表末新增節點,在表頭新增節點相當於插入新節點的操作。

now-

>next=p;

//尾節點指向新節點p

如果需要在鍊錶的中間插入某個節點的話,不能隨意斷開指標,不然斷開點之後的內容將會沒法訪問。

此時就需要先將對新節點進行操作,將節點的指標指向即將斷開的節點,這時才可斷開原鍊錶指標。

根據插入位置的不同,可以分成兩種插入方式,但是在單鏈表中當前節點沒法訪問前乙個節點。

假設當前節點為now時,需要在now之後新增乙個新節點p

now下乙個節點可以用now->next來表示。

p-

>next//將新節點指向now節點的下乙個節點

now-

>next=p//將指標斷開並指向新節點

執行過程如下

刪除節點和新增節點類似,因為單鏈表沒法訪問到前乙個節點,所以只能刪除當前節點now的下乙個節點,頭節點的用處之一就在這,如果頭結點中含有資料且需要刪除時,則單鏈表中就沒有頭節點的前乙個節點可以訪問。當頭節點不放置資料也不需要進行刪除的操作,就避免了此類情況的發生。

在單鏈表中,要刪除乙個節點的時候,需要將now定位在需要刪除節點的前乙個節點

//直接將當前節點指向刪除節點的下乙個節點

如果刪除的節點是最後的乙個節點,則直接將now指標指向空即可。

實現輸入多個數字,並顯示所有的數字

/*

*/#include

using

namespace std;

typedef

struct node

lnode,

*list;

intmain()

now=l-

>next;

//指向頭節點的下乙個節點

cout<<

"存入的數字為: "

;while

(now)

//當前節點不為空時繼續迴圈

cout<

return0;

}

單鏈表的c 實現

node類標頭檔案 ifndef node h define node h include include using namespace std class node endif node類cpp include node.h using namespace std 過載 運算子 ostream ...

單鏈表的C 實現

include using namespace std struct node class list void insertlist int adata,int bdata void deletelist int adata void outputlist node gethead void lis...

C 單鏈表的實現

include include include include using namespace std typedef struct student node node create 建立單鏈表 else cycle 0 head head next p next null coutreturn h...