203 移除鍊錶元素

2022-06-26 05:51:06 字數 900 閱讀 6314

給你乙個鍊錶的頭節點 head 和乙個整數 val ,請你刪除鍊錶中所有滿足 node.val == val 的節點,並返回 新的頭節點 。

不帶頭結點的解法,分兩種情況:

首元素的值=val,直接把head往前移

非首元素的值=val,刪除該元素,連線前後元素

帶虛擬頭結點的解法

參考上面非首元素解法

記得釋放結點所佔記憶體

/**

* definition for singly-linked list.

* struct listnode ;

*/

//不帶頭結點

struct listnode* removeelements(struct listnode* head, int val)

while(head && head->val==val)

struct listnode*p=head;

while(p && p->next)else

}return head;

}

//帶虛擬頭結點

struct listnode* removeelements(struct listnode* head, int val)

struct listnode*my_head=(struct listnode*)malloc(sizeof(struct listnode));

my_head->next=head;

struct listnode*p=my_head;

while(p && p->next)else

}return my_head->next;

}

203 移除鍊錶元素

刪除鍊錶中等於給定值val的所有節點。示例 輸入 1 2 6 3 4 5 6,val 6輸出 1 2 3 4 5刪除結點的步驟 找到該結點的前乙個結點 進行刪除操作 三種方法 1.刪除頭結點時另做考慮 由於頭結點沒有前乙個結點 2.新增乙個虛擬頭結點,刪除頭結點就不用另做考慮 3.遞迴 演示 方法一...

203 移除鍊錶元素

刪除鍊錶中等於給定值 val 的所有節點。示例 輸入 1 2 6 3 4 5 6,val 6 輸出 1 2 3 4 5使用空表頭,就可以不用判斷單個節點的情況或多個相同節點的情況.使用空表頭 public listnode removeelementsdummy listnode head,int ...

203 移除鍊錶元素

刪除鍊錶中與val值相等的節點,使用哨兵節點 哨兵節點廣泛應用於樹和鍊錶中,如偽頭 偽尾 標記等,它們是純功能的,通常不儲存任何資料,其主要目的是使鍊錶標準化,如使鍊錶永不為空 永不無頭 簡化插入和刪除。屬於簡單題 class solution def removeelements self,hea...