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 ListNode 13 * @param val an integer 14 * @return a ListNode 15 */ 16 ListNode *removeElements(ListNode *head, int val) { 17 // Write your code here 18 // Find the first non-Val node 19 while ( head != NULL && head->val == val ) { 20 head = head->next; 21 } 22 // If the head is NULL, return 23 if ( head == NULL ) { 24 return head; 25 } 26 // Remove the left val nodes 27 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 node 37 pre->next = cur; 38 // return 39 return head; 40 } 41 };
本文转自ZH奶酪博客园博客,原文链接:http://www.cnblogs.com/CheeseZH/p/4998696.html,如需转载请自行联系原作者