二級指標刪除單鏈表

2021-07-03 11:50:50 字數 1138 閱讀 9707

首先建立乙個節點

typedef struct node

node;

然後再建立乙個鍊錶,鍊錶元素是由 1 ~ 5 這5個整數除以2得到的餘數構成的。

建立這個鍊錶依然使用了二級指標。直接在create函式中修改了*head的值,讓*head的值是第乙個節點。

可見這種方法建立的鍊錶不存在大多數教材上得「頭結點」這個節點。

這種方法建立的鍊錶有多少的元素就有多少節點。

void create( node **head )

rear->next = null;

}

接下來是刪除了

某些或者大多數教科書上是這樣的:要刪除某個x節點,要找到x節點的前乙個節點w(至於怎樣找到w這個節點可以遍歷鍊錶),

這樣才不至於x被刪除之後鍊錶就從這裡斷開了。

找到了w節點,在刪除x節點之前我們一般這樣做的:w->next = x->next;

這樣即使x刪除了,鍊錶也不會斷開。

大多數的思想都是這樣的吧。

那麼能不能不去找前乙個節點呢?

答案是可以的

如下:

void removenode( node **head, int remove_data )

else

cur = &en->next;

}}

這個刪除節點的**並沒有去找前乙個節點,而是利用了二級指標巧妙的在刪除當前節點之前修改了當前節點的前乙個節點的next值,同樣達到了w->next = x->next;

的效果。

完整**:

#include	#include	typedef struct node

node;

void removenode( node **head, int remove_data )

else

cur = &en->next; }}

void create( node **head )

rear->next = null;

}void print( node **head )

}int main()

利用二級指標刪除單鏈表中的節點

今天在酷殼上看到linus提到的使用及指標來刪除單鏈表中的節點,感覺比常見做法要好很多,所以記錄一下。方便自己以後檢視。為了進行對比先寫乙個自己在進行單鏈表節點刪除時操作 鏈 式如下 第一種方法 採用一級指標 刪除鍊錶中 節點值 value 的節點 struct node remove struct...

二級指標刪除單向鍊錶

給定乙個單鏈表,刪除該鍊錶中某些節點。乙個節點該不該刪除由函式remove 決定,該單鏈表刪除的函式原型為 struct listnode removeif struct listnode head,removefn remove 下面給出三種解法,主要是想突出第三種使用二級指標的方法。這個是我自己...

指標與二級指標

int num 10 int p1 int p2 p1 指標的指向結構如下圖所示 0x4000 0x3000 p2 0x2000 p1 num p2 表示的是儲存p2指標的位址 p2 表示的是p2指向的位址,即指標p1存放的位址 p2 表示指標p2指向位址中所存的值,即指標p1指向的位址,即變數nu...