LintCode: Remove Linked List Elements
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奶酪(张贺)
邮箱:
cheesezh@qq.com
出处:
http://www.cnblogs.com/CheeseZH/
*
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。