leetcode203虛擬頭節點法Cpp實現
阿新 • • 發佈:2018-12-14
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;
}
};
以上的邊界條件請大家思考。