1. 程式人生 > >刪除鏈表中的指定元素節點

刪除鏈表中的指定元素節點

需要 bre pan 指定元素 ret ons normal amp one

Remove all elements from a linked list of integers that have valueval.

Have you met this question in a real interview? Yes Example

Given 1->2->3->3->4->5->3, val = 3, you should return the list as1->2->4->5

要註意開始的節點是否是要刪除節點,還有中間有連續的待刪除節點,和最後的節點需要刪除情況

/**
 * 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 if(head == NULL )return NULL; while(head != NULL && head->val == val) { head
= head->next; } if(head == NULL )return NULL; ListNode *p = head; while(p->next != NULL) { if(p->next->val != val) p = p->next; else { ListNode *tmp = p->next; while
(tmp != NULL && tmp->val == val) { tmp = tmp->next; } p->next = tmp; p = p->next; } if(p == NULL)break; } return head; } };

刪除鏈表中的指定元素節點