1 #include<iostream>
2 #include<stdio.h>
3 #include<string.h>
4 #include<conio.h>
5 using namespace std;
6
7 typedef struct student
8 {
9 int data;
10 struct student *next;
11 }node;
12
13 node *creat()
14 {
15 node *head,*p,*s;
16 int x,cycle=1;
17 head=(node*)malloc(sizeof(node));
18 p=head;
19 while(cycle)
20 {
21 printf("\nplease input the data:");
22 scanf("%d",&x);
23 if(x!=0)
24 {
25 s=(node *)malloc(sizeof(node));
26 s->data=x;
27 printf("\n%d",s->data);
28 p->next=s;
29 p=s;
30
31 }
32 else
33 cycle=0;
34
35 }
36
37 head=head->next;
38 p->next=NULL;
39 printf("\n yyy %d",head->data);
40 return(head);
41
42 }
43
44 int length(node *head)
45 {
46 int n=0;
47 node *p;
48 p=head;
49 while(p!=NULL)
50 {
51 p=p->next;
52 n++;
53 }
54 return(n);
55 }
56
57 void print(node *head)
58 {
59 node *p;
60 int n;
61 n=length(head);
62 printf("\nNow,These %d records are:\n",n);
63 p=head;
64 if(head!=NULL)
65 while(p!=NULL)
66 {
67 printf("\n uuu %d ",p->data);
68 p=p->next;
69 }
70 }
71
72 node *del(node *head,int num)
73 {
74 node *p1,*p2;
75 p1=head;
76 while(num!=p1->data&&p1->next!=NULL)
77 {p2=p1;p1=p1->next;}
78
79 if(num==p1->data)
80 {
81 if(p1==head)
82 {
83 head=p1->next;
84 free(p1);
85 }
86 else
87 p2->next=p1->next;
88
89 }
90 else
91 printf("\n%d could not been found",num);
92 return(head);
93 }
94
95
96 node *insert(node *head,int num)
97 {
98 node *p0,*p1,*p2;
99 p1=head;
100 p0=(node *)malloc(sizeof(node));
101 p0->data=num;
102 while(p0->data>p1->data&&p1->next!=NULL)
103 {p2=p1;p1=p1->next;}
104
105 if(p0->data<=p1->data)
106 {
107 if(head==p1)
108 {
109 p0->next=p1;
110 head=p0;
111 }
112 else
113 {
114 p2->next=p0;
115 p0->next=p1;
116 }
117
118 }
119 else
120 {
121 p1->next=p0;p0->next=NULL;
122 }
123 return(head);
124 }
125
126 node *sort(node *head)
127 {
128 node *p,*p2,*p3;
129 int n;int temp;
130 n=length(head);
131 if(head==NULL||head->next==NULL)
132 return head;
133 p=head;
134 for(int j=1;j<n;++j)
135 {
136 p=head;
137 for(int i=0;i<n-j;++i)
138 {
139 if(p->data>p->next->data)
140 {
141 temp=p->data;
142 p->data=p->next->data;
143 p->next->data=temp;
144 }
145 p=p->next;
146 }
147 }
148 return head;
149 }
150
151
152 node *reverse(node *head)
153 {
154 node *p1,*p2,*p3;
155
156 if(head==NULL||head->next==NULL)
157 return head;
158
159 p1=head,p2=p1->next;
160 while(p2)
161 {
162 p3=p2->next;
163 p2->next=p1;
164 p1=p2;
165 p2=p3;
166 }
167 head->next=NULL;
168 head=p1;
169 return head;
170 }
171
172 int main()
173 {
174 node *head,stud;
175 int n,del_num,insert_num;
176 head=creat();
177 print(head);
178 cout<<"\nInt :";
179 cin>>del_num;
180 head=del(head,del_num);
181 print(head);
182 cout<<"\nplease input the insert data: ";
183 cin>>insert_num;
184 head=insert(head,insert_num);
185 print(head);
186
187 return 0;
188
189 }