1 #include <iostream.h>
2
3 struct fbplayer
4 {
5 int age;//年龄
6 char name[20];//姓名
7 int num;//编号
8 float score;//综合评分
9 fbplayer *next;
10 };
11
12
13
14 fbplayer *Input(int n)//输入
15 {
16 fbplayer *head ;
17 fbplayer *p1,*p2;
18 int i;
19 head= NULL;
20
21 p2 = new fbplayer;
22 for(i=1;i<=n;i++)
23 {
24 p1= new fbplayer;
25 cout<<"年龄、姓名、编号、综合评分"<<endl;
26 cin>>p1->age;
27 cin>>p1->name;
28 cin>>p1->num;
29 cin>>p1->score;
30 cout<<endl;
31 if(i==1)head = p1;
32 else p2->next = p1;
33 p2 = p1;
34 }
35 p2->next = NULL;
36 return head;
37 }
38 void Output(fbplayer *head)//输出
39 {
40 fbplayer *p;
41 p = head;
42 while(p!=NULL)
43 {
44 cout<<"年龄:"<<p->age<<",姓名:"<<p->name<<",编号:"<<p->num<<",综合评分:"<<p->score<<endl;
45 p = p->next;
46 }
47 cout<<endl;
48 }
49
50 void Destroy(fbplayer *head)//销毁
51 {
52 fbplayer * p=head;
53 fbplayer * t;
54 while (p)
55 {
56 t=p;
57 p=p->next;
58 delete t ;
59 }
60 }
61
62 fbplayer *sort(fbplayer *head)//冒泡排序
63 {
64 fbplayer *p,*p1,*p2,*p3;
65 fbplayer h, t;
66 if (head == NULL) return NULL;
67 h.next=head;
68 p=&h;
69 while (p->next!=NULL)
70 {
71 p=p->next;
72 }
73 p=p->next=&t;
74 while (p!=h.next)
75 {
76 p3=&h;
77 p1=p3->next;
78 p2=p1->next;
79 while (p2!=p)
80 {
81 if ((p1->score)>(p2->score))
82 {
83 p1->next=p2->next;
84 p2->next=p1;
85 p3->next=p2;
86
87 p3=p2;
88 p2=p1->next;
89
90 } else {
91 p3=p1;
92 p1=p2;
93 p2=p2->next;
94 }
95 }
96 p=p1;
97 }
98 while (p->next!=&t)
99 {
100 p=p->next;
101 }
102 p->next=NULL;
103 return h.next;
104 }
105
106 fbplayer *Insert(fbplayer *head)//插入
107 {
108 fbplayer *q=NULL;
109 fbplayer *p=NULL;
110 fbplayer *s=NULL;
111 q=head;//头结点
112 p=q;
113
114 while(p!=NULL)//找到尾指针
115 {
116 q=p;
117 p=q->next;
118 }
119 s=new fbplayer;
120
121 cout<<"请输入要插入的年龄、姓名、编号、综合评分"<<endl;
122 cin>>s->age;
123 cin>>s->name;
124 cin>>s->num;
125 cin>>s->score;
126 q->next=s;
127 s->next=p;
128 return head;
129 }
130
131 fbplayer *Delete(fbplayer *head)//删除
132 {
133 fbplayer* q = head;
134 fbplayer* p = 0;
135
136 int x;
137 cout<<"请输入要删除球员的编号:";
138 cin>>x;
139
140 while (q)
141 {
142 if (q->num==x)
143 {
144 if (!p)
145 {
146 q = q->next;
147 delete head;
148 head = q;
149 }
150 else
151 {
152 p->next = q->next;
153 delete q;
154 q = p->next;
155 }
156 }
157 else
158 {
159 p = q;
160 q = q->next;
161 }
162 }
163
164 return head;
165 }
166
167
168 fbplayer *Find(fbplayer *head)//按编号查找
169 {
170 fbplayer *q;
171 q=head;
172 int x;
173 cout<<"请输入要查找球员的编号:";
174 cin>>x;
175 int flags = 1;
176 while(q!=NULL){
177 if(q->num ==x)
178 {
179 return q;
180 flags = 0;
181 break;
182 }
183 q = q->next;
184 }
185 if(flags = 1)q=0;
186 return q;
187
188 }
189 void main()
190 {
191
192 int n;
193 cout<<"请输入球员数目:";
194 cin>>n;
195 fbplayer *head = new fbplayer;
196 head = Input(n);
197 head = Insert(head);
198 Output(head);
199 head = sort(head);
200 Output(head);
201 cout<<Find(head)<<endl;
202 Output(head);
203 Destroy(head);
204 }