Lintcode 452.刪除鏈表中的元素

1.問題描述:刪除鏈表中等於給定值val的所有節點

2.解題思路:創建一個頭節點dummy,來保存第一個節點。然後將dummy附值給head,這樣就從鏈表的第一的節點開始遍歷,若head->next的值與val的值相等,則將head->next指向head->next->next;這樣就可以刪除節點。繼續移動將head下移,刪除整條鏈中存放val的節點。

3.解決問題的代碼

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}* };
 */
class Solution {
public:
    /**
     * @param head a ListNode
     * @param val an integer
     * @return a ListNode
     */
        ListNode *removeElements(ListNode *head, int val) {
        // Write your code here
        ListNode *dummy=new ListNode(0);
        dummy->next=head;
        head=dummy;
        while(head->next!=NULL)
        {
            if(head->next->val==val){head->next=head->next->next;}
            else {head=head->next;}
        }
        return dummy->next;
    }

};
4.感想:這道題很簡單,但還是有要注意的一個地方,每次判斷的時候判斷head->next->val和給定的val的值的關係,這樣就可以實現斷鏈再重新接鏈,將要刪除的節點從鏈表上斷開。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章