移除連結串列元素(leetcode簡單篇二百零三題)
阿新 • • 發佈:2018-12-01
刪除連結串列中等於給定值 val 的所有節點。
示例:
輸入: 1->2->6->3->4->5->6, val = 6
輸出: 1->2->3->4->5
struct ListNode* removeElements(struct ListNode* head, int val)
{
struct ListNode* cur = head;//當前位置指標
struct ListNode* prev = NULL;//當前位置之前的指標
struct ListNode* next;
while (cur)
{
if(cur -> val == val)//判斷數值是否需要被刪除
{
next = cur -> next;//記住當前位置之後的位置
free(cur);//釋放當前的需要刪除的空間
cur = next;//讓cur指向下一個位置
if(prev == NULL)
{
head = next;//此處如果刪除的是頭節點的話,讓頭節點指向下一個位置
}
else
{
prev -> next = next;//如果刪除的不是頭節點讓prev的next的指標指向當前位置
}
}
else//不刪除讓指標向後走
{
prev = cur;
cur = cur -> next;
}
}
return head;
}