刪除鍊錶中給定值等於val的所有結點

2021-09-10 02:39:31 字數 819 閱讀 4526

△刪除鍊錶中給定值等於val的所有結點

1.無頭結點,直接遍歷,刪除與val相等的結點

struct listnode ;

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

else

}if(head->val==val)

return head;

}

2.加頭結點,好處是不用新增兩個指標來記錄位置

struct listnode ;

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

listnode* tmp=new listnode(0);

tmp->next=head;

head=tmp;

while(tmp->next!=null)

else

return tmp->next;

}

3.遞迴

每次對頭進行判斷,此值是否等於給定值val

如果相等,將此結點刪除掉,將下乙個結點作為頭結點來遞迴呼叫自己

否則,將此結點的下乙個結點作為頭結點來遞迴呼叫自己

struct listnode ;

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

else if(head->val==val)

else

}

刪除鍊錶中等於給定值val的所有節點

刪除鍊錶中等於給定值val的所有節點 例如 給出鍊錶1 2 3 3 4 5 3,和 val 3,你需要返回刪除3之後的鍊錶 1 2 4 5 way1 迭代 追加人為表頭 陷入沒有表頭的陷阱,總是想記下刪除節點的先驅,導致折騰了很久,其實只要人為加乙個表頭就簡單很多了!definition for s...

刪除鍊錶中等於給定值 val 的所有節點。

採用快慢針的方法,listnode p指向鍊錶頭部,listnode q p.next。再定義乙個listnode start表示刪除指定val值後的頭結點,先賦值為p。結點的遍歷從q結點開始,當q.val不等於val時,p的下乙個結點指向q,並且p q同時向後移動,直至q null,表示遍歷鍊錶結...

刪除鍊錶中等於給定值 val 的所有節點

刪除鍊錶中等於給定值val的所有節點 示例 輸入 1 2 6 3 4 5 6,val 6 輸出 1 2 3 4 5 分析過程 1 要想刪除所有給定值為val的節點,必須要遍歷一次鍊錶 2 從第二個節點開始遍歷 如果從第乙個節點開始遍歷,第乙個節點的prev會出現空指標異常 3.1 如果cur節點的值...