码迷,mamicode.com
首页 > 其他好文 > 详细

Remove Linked List Elements

时间:2015-06-09 21:23:05      阅读:82      评论:0      收藏:0      [点我收藏+]

标签:

技术分享
 1 class Solution {
 2 public:
 3     ListNode* removeElements(ListNode* head, int val) {
 4         ListNode*cur,*nxt,*pre=head;
 5         if(head==NULL)
 6             return head;
 7         for(cur=head->next;cur!=NULL;cur=nxt)
 8         {
 9             nxt=cur->next;
10             if(cur->val==val)
11             {
12                 pre->next=nxt;
13                 free(cur);
14             }
15             else
16                 pre=cur;
17         }
18         if(head->val==val)
19         {
20             cur=head;
21             head=head->next;
22             free(cur);
23         }
24         return head;
25     }
26 };
View Code

做链表题如果 条件允许,最好手工模拟一遍,在做这道题的时候因为忘记写了一句pre=cur,一直出错。

完整代码:

技术分享
 1 #include <iostream>
 2 #include <string>
 3 #include <vector>
 4 #include <algorithm>
 5 #include <cstring>
 6 #include <map>
 7 #include <cctype>
 8 #include <cmath>
 9 using namespace std;
10 
11 struct ListNode {
12     int val;
13     ListNode *next;
14     ListNode(int x) : val(x), next(NULL) {}
15 };
16 
17 class Solution {
18 public:
19     ListNode* removeElements(ListNode* head, int val) {
20         ListNode*cur,*nxt,*pre=head;
21         if(head==NULL)
22             return head;
23         for(cur=head->next;cur!=NULL;cur=nxt)
24         {
25             nxt=cur->next;
26             if(cur->val==val)
27             {
28                 pre->next=nxt;
29                 free(cur);
30             }
31             else
32                 pre=cur;
33         }
34         if(head->val==val)
35         {
36             cur=head;
37             head=head->next;
38             free(cur);
39         }
40         return head;
41     }
42 };
43 ListNode* ListInsert(int d)
44 {
45     ListNode *tmp;
46     tmp=(ListNode*)malloc(sizeof(ListNode));
47     tmp->val=d;
48     tmp->next=NULL;
49     return tmp;
50 }
51 int main()
52 {
53     int n,val;
54     while(cin>>n>>val)
55     {
56         ListNode *head,*tail,*cur;
57         tail=(ListNode*)malloc(sizeof(ListNode));
58         int i,d;
59         for(i=0;i<n;i++)
60         {
61             cin>>d;
62             cur=ListInsert(d);
63             if(i==0)
64             {
65                 head=cur;
66                 tail=head;
67             }
68             else
69             {
70                 tail->next=cur;
71                 tail=cur;
72             }
73         }
74         Solution sol;
75         ListNode *h=sol.removeElements(head,val);
76         for(;h!=NULL;h=h->next)
77             cout<<h->val<<" ";
78         cout<<endl;
79     }
80     return 0;
81 }
View Code

 

Remove Linked List Elements

标签:

原文地址:http://www.cnblogs.com/varcom/p/4564358.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!