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 }