@Kuzia domovenok
2122 / 1952 / 193
Регистрация: 25.03.2012
Сообщений: 6,772
|
14.04.2014, 12:48
|
|
C++ | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
| #include <iostream>
#include <ctime>
#include <cstdlib>
struct item{
int value;
item* next;
};
struct list{
item* start;
item* end;
};
void init(list& tlist){
tlist.start=tlist.end=NULL;
}
void push_back_Item(list& tlist, int value){
if (tlist.end){
tlist.end->next=new item;
tlist.end=tlist.end->next;
tlist.end->next=NULL;
tlist.end->value=value;
}
else{
tlist.start=tlist.end=new item;
tlist.end->next=NULL;
tlist.end->value=value;
}
}
void output_list(const list& tlist){
for(item* i=tlist.start; i!=NULL; i=i->next)
std::cout<<(i->value)<<", ";
std::cout<<std::endl;
}
void process_list(list& tlist){
if (!tlist.start) return;
item* i=tlist.start;
while(i->next){
if (i->value == i->next->value){
item* tmp=i->next->next;
delete i->next;
i->next=tmp;
if (!tmp){
tlist.end=i;
return;
}
}
i=i->next;
tlist.end=i;
}
}
void clear_list(list& tlist){
item* i=tlist.start;
while(i){
item* tmp=i->next;
delete i;
i=tmp;
}
tlist.start=tlist.end=NULL;
}
int main(){
int size;
srand(time(NULL));
std::cout<<"Input sizeof list: ";
std::cin>>size;
int pre_value;
list data;
init(data);
for (int i=0; i<size; i++){
if ((i&1)==0)
pre_value=i;
push_back_Item(data, pre_value);
}
std::cout<<"created list: ";
output_list(data);
std::cout<<"processed list: ";
process_list(data);
output_list(data);
clear_list(data);
return 0;
} |
|
0
|