1 #include <stdio.h>
2 #include <iostream>
3 #include <stdlib.h>
4
5 using namespace std;
6
7 struct Person{
8 int age;
9 struct Person *next;
10 };
11 Person *CrtHeadNode(){
12 Person *head ,*tmp;
13 head = tmp = NULL;
14 Person *p=NULL;
15 int n;
16 cout<<"Node Number:"<<endl;
17 cin>>n;
18 for(int i = 0;i<n;i++){
19 tmp = new Person;//(Person*)(malloc(sizeof(Person)));
20 cout<<"Age:" <<endl;
21 cin >>tmp->age;
22 tmp->next=NULL;
23 if(head){
24 tmp->next = head;
25 head = tmp ;
26 }else{
27
28 p = head = tmp;
29 }
30 }
31 p->next = head;
32 return head;
33 }
34
35 Person *CrtTailNode(){
36 Person *head,*tail,*tmp;
37 int n;
38 cout<<"Node Number:"<<endl;
39 cin>>n;
40 head = tail = tmp = NULL;
41 for(int i = 0;i<n;i++){
42 tmp = new Person;//(Person*)(malloc(sizeof(Person)));
43 cout<<"Age:" <<endl;
44 cin >>tmp->age;
45 if(head){
46 while(tail->next!=head){
47 tail = tail->next;
48 }
49 tail->next = tmp;
50 tail = tmp;
51 tmp->next=head;
52 // head = tail->next;
53 }else{
54 head = tail = tmp;
55 tmp->next=head;
56 // head = tail->next;
57 }
58 }
59 return head;
60 }
61 Person *FindNode(Person *head,int age){
62 Person* tmp;
63 tmp = NULL;
64 tmp = head;
65 do{
66 if(tmp->age == age){
67 break;
68 }
69 tmp = tmp->next;
70 }while(tmp!=head);
71 if(tmp==head){
72 return NULL;
73 }
74
75 /*
76 while(tmp!=NULL){
77 if(tmp->age ==age){
78 break;
79 }
80 tmp = tmp->next;
81 }
82 if(tmp==NULL){
83 return NULL;
84 }*/
85 return tmp;
86
87 }
88 int DelNode(Person *head,int age){
89 Person *tmp;
90 tmp = NULL;
91 tmp = head;
92 do{
93 if(tmp->next->age == age){
94 break;
95 }
96 tmp = tmp->next;
97 }while(tmp!=head);
98 if(tmp==head){
99 return 1;
100 }
101 /*
102 while(tmp->next!=NULL){
103 if(tmp->next->age==age){
104 break;
105 }
106 tmp = tmp->next;
107 }
108 if(tmp->next==NULL){
109 cout<<"DEL NOT FIND!"<<endl;;
110 return 1;
111 }*/
112 else{
113 Person *find = NULL;
114 find = tmp->next;
115 tmp->next = find->next;
116 free(find);
117 // delete find;
118 }
119 return 0;
120
121 }
135
136 void show(Person *head){
137
138 /* if(head==NULL){
139 cout<<"Empty"<<endl;
140 }
141 */
142
143 Person *p;
144 p = head->next;
145 cout<<head->age<<endl;
146 while(p!=head){
147 cout<<p->age<<endl;
148 p = p->next;
149 }
150 /*
151 Person *p = head;
152 do{
153 cout<<p->age<<endl;
154 p = p->next;
155 }while(p!=head);*/
156 }
157 int main(){
158 Person *p;
159 Person *find;
160 p = CrtHeadNode();
161 // p = CrtTailNode();
162 // MakeEmptyNode(p);
163
164
165 find = FindNode(p,10);
166 if(find==NULL){
167 cout<<"Not find"<<endl;
168 }else{
169 cout<<"FindNode is:"<<find->age<<endl;
170 }
171
172 int n= DelNode(p,10);
173 if(!n){
174 cout<<"del success!"<<endl;
175 }/*
176 find = FindNode(p,10);
177 if(find==NULL){
178 cout<<"Not find"<<endl;
179 }else{
180 cout<<"FindNode is:"<<find->age<<endl;
181 }*/
182 show(p);
183 return 0;
184 }