1. 程式人生 > >LeetCode 203. 刪除連結串列中的節點(C++)

LeetCode 203. 刪除連結串列中的節點(C++)

題目:

刪除連結串列中等於給定值 val 的所有節點。

示例:

輸入: 1->2->6->3->4->5->6, val = 6
輸出: 1->2->3->4->5

思路:

建立虛擬頭節點指向head,遍歷連結串列,當連結串列的cur->next->val等於給定的val則刪除cur->next並將cur指向刪除節點的下一節點。

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next
; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* removeElements(ListNode* head, int val) { ListNode* dummyHead = new ListNode(0); dummyHead -> next = head; ListNode* cur = dummyHead; while(cur -> next != NULL){ if
(cur -> next -> val == val){ ListNode* delNode = cur -> next; cur -> next = delNode -> next; delete delNode; } else cur = cur -> next; } ListNode* retNode = dummyHead -> next
; delete dummyHead; return retNode; } };