C 語言中,如何刪除單鏈表中的節點?

時間 2021-05-30 02:38:40

1樓:zet

struct Node ;

void removeValue(Node **list, int val)

//測試

int main(int argc, char *argvNode myNode1;

Node *node1 = &myNode1;

node1->val = 1;

Node myNode2;

Node *node2 = &myNode2;

node2->val = 1;

Node myNode3;

Node *node3 = &myNode3;

node3->val = 1;

Node myNode4;

Node *node4= &myNode4;

node4->val = 4;

Node myNode5;

Node *node5 = &myNode5;

node5->val = 5;

node5->next = nullptr;

node1->next = node2;

node2->next = node3;

node3->next = node4;

node4->next = node5;

removeValue(&node1, 5);

return 0;}

2樓:

這類問題有必要給他解答嗎?

這裡好像不是Stackoverflow。就算是Stackoverflow,也不推薦問這類基礎的不能再基礎的「如何」類問題。

3樓:鐘雲龍

struct

GSList

;// 因為 glib 的鍊錶沒有哨位頭節點,因此對鍊錶進行修改會導致鍊錶本身的值發生改變

GSList

*g_slist_remove_link

(GSList

*list

,GSList

*link

)prev

=tmp

;tmp

=tmp

->next;}

return

list;}

4樓:pansz

給個提示,一般用到單鏈表的時候,給的節點一定是前乙個節點,而首節點一般是個哨兵。至於節點直接為空,這個引數是非法的。這都是資料結構書的一些老古董了。

這個面試題,只能說很老。不好說他錯,因為他用的是潛規則。

5樓:陳良喬

這是誰出的面試題?

乙個不完善的方法應該是你的思路

將n之後的節點依次前移,也就是n+1變成n,n+2變成n+1這樣就空出了最後乙個節點,刪掉就可以了

但是這種方法沒法解決n為尾節點的情況

如果n是尾節點,必須修改他的前乙個節點

單鏈表如何得到前乙個節點?求解

如何理解C語言中的識別符號?

Milo Yip 識別符號 cppreference.com識別符號能指代下列型別的實體 物件函式 標籤 struct union 或列舉 結構體或聯合體成員 列舉常量 typedef 名 標號名巨集名 巨集形參名 就是程式設計師可以命名一些東西,不要想得太複雜。 chenc 讀書是為了獲取知識,獲...

C語言中如何定義可移植的結構體?

專案裡經常遇到類似的情況。我們通常都使用巨集來解決。如 struct myStruct 成員變數型別統一使用 S16 16位有符號數 U16 16位無符號數 S32 32位有符號數 U32 32位無符號數 吳才澤 在真正的多平台移植過程中,結構體定義的可移植性反而不太關注,要關注的是程式本身的可移植...

C語言中強制型別轉換是如何實現的?

涇渭漳淮 強制轉換時怎麼實現的?通常是由單獨的CPU指令實現的,也就是硬體實現的。5立方之後是125,125開立方之後是幾?嚴格的數學上應該是5,但實際上計算機有精度的限制,計算結果會有誤差,計算機計算得到的結果可能是4.9999999999999435452340065849之類的,將這個值直接取...