1. 程式人生 > >leetcode203虛擬頭節點法Cpp實現

leetcode203虛擬頭節點法Cpp實現

203號題目是在連結串列中刪除一個值,大家可以動手寫一下,看似很簡單的題目,實則機關重重,其中最難處理的是頭節點的值即為要刪除物件,另外,如果頭節點後面也是要刪除物件,你大可以寫一個while迴圈判斷這種情況,然後再寫一個頭節點不是要刪除物件的邏輯實現,不過那樣過於冗長,這裡提供一個新穎的角度,即建立一個虛擬頭節點,然後以這個節點開始處理連結串列,這樣後面的元素都可以按照一個邏輯處理,不再存在上述多種複雜情況,在最後記得刪除虛擬頭節點。 給出程式碼實現:

class Solution{
public:
    ListNode* removeElements(ListNode* head, int
val) { ListNode* xHead = new ListNode(0); xHead->next = head; ListNode* cur = xHead; while(cur->next!=NULL){ if(cur->next->val == val){ ListNode* deleteN = cur->next; cur->next = deleteN->next; delete deleteN; }
else cur = cur->next; } ListNode* rHead = xHead->next; delete xHead; return rHead; } };

以上的邊界條件請大家思考。