LeeCode-Remove Linked List Elements
Remove all elements from a linked list of integers that have value val.
Example
Given: 1 --> 2 --> 6 --> 3 --> 4 --> 5 --> 6, val = 6
Return: 1 --> 2 --> 3 --> 4 --> 5
1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * struct ListNode *next; 6 * }; 7 */ 8 struct ListNode* removeElements(struct ListNode* head, int val) 9 { 10 if(head==NULL) 11 return NULL; 12 13 if(head->next==NULL&&head->val==val) 14 { 15 return NULL; 16 } 17 18 if(head->next==NULL&&head->val!=val) 19 { 20 return head; 21 } 22 23 24 25 struct ListNode *p=head; 26 27 while(p->val==val&&p->next!=NULL) 28 { 29 p=p->next; 30 } 31 32 if(p->val==val) 33 { 34 return NULL; 35 } 36 37 38 head=p; 39 40 if(p->next==NULL) 41 { 42 return head; 43 } 44 45 while(p->next->next!=NULL) 46 { 47 if(p->next->val==val) 48 { 49 p->next=p->next->next; 50 continue; 51 } 52 p=p->next; 53 } 54 55 if(p->next->val==val) 56 { 57 p->next=NULL; 58 } 59 60 return head; 61 }
作者:vpoet
出处:http://www.cnblogs.com/vpoet/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
出处:http://www.cnblogs.com/vpoet/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。