C++
1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * ListNode *next; 6 * ListNode(int x) : val(x), next(NULL) {} 7 * }; 8 */ 9 class Solution {10 public:11 /**12 * @param head a ListNode13 * @param val an integer14 * @return a ListNode15 */16 ListNode *removeElements(ListNode *head, int val) {17 // Write your code here18 // Find the first non-Val node19 while ( head != NULL && head->val == val ) {20 head = head->next;21 }22 // If the head is NULL, return23 if ( head == NULL ) {24 return head;25 }26 // Remove the left val nodes27 ListNode *pre = head;28 ListNode *cur = pre->next;29 while ( cur != NULL ) {30 if ( cur->val != val ) {31 pre->next = cur;32 pre = pre->next;33 }34 cur = cur->next;35 }36 // In case of the tail has val node37 pre->next = cur;38 // return39 return head;40 }41 };