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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
<code>//class.h 头文件</code>
<code>#include <string></code>
<code>#include <iostream></code>
<code>#include <iomanip> //实现setw()宽字节输出</code>
<code>using</code> <code>namespace</code> <code>std;</code>
<code>class</code> <code>stuDate</code>
<code>{</code>
<code>public</code><code>:</code>
<code> </code><code>struct</code> <code>student</code>
<code> </code><code>{</code>
<code> </code><code>string name; </code><code>//姓名 </code>
<code> </code><code>string sex; </code><code>//性别</code>
<code> </code><code>int</code> <code>id;</code>
<code> </code><code>float</code> <code>eng,math,chinese,c,sum;</code>
<code> </code><code>struct</code> <code>student *next;</code>
<code> </code><code>};</code>
<code>};</code>
<code>class</code> <code>stuList :</code><code>public</code> <code>stuDate</code>
<code>private</code><code>:</code>
<code> </code><code>int</code> <code>num; </code><code>//人数</code>
<code> </code><code>struct</code> <code>student *head;</code>
<code> </code><code>stuList();</code>
<code> </code><code>void</code> <code>_creat();</code>
<code> </code><code>void</code> <code>_print();</code>
<code> </code><code>void</code> <code>_sort();</code>
<code>stuList::stuList()</code>
<code> </code><code>this</code><code>->head=NULL;</code>
<code> </code><code>this</code><code>->num=0;</code>
<code>}</code>
<code>void</code> <code>stuList::_creat()</code>
<code> </code><code>char</code> <code>res = </code><code>'Y'</code><code>;</code>
<code> </code><code>struct</code> <code>student *p1,*p2;</code>
<code> </code><code>p1=p2=</code><code>new</code> <code>struct</code> <code>student;</code>
<code> </code><code>while</code><code>(res==</code><code>'Y'</code> <code>|| res == </code><code>'y'</code><code>)</code>
<code> </code><code>{</code>
<code> </code><code>if</code><code>(</code><code>this</code><code>->head == NULL)</code>
<code> </code><code>this</code><code>->head=p1;</code>
<code> </code><code>p1->id=0;</code>
<code> </code><code>}</code>
<code> </code><code>else</code>
<code> </code><code>p2->next=p1;</code>
<code> </code><code>cout<<</code><code>"Name:"</code><code>;</code>
<code> </code><code>cin>>p1->name;</code>
<code> </code><code>cout<<</code><code>"Sex:"</code><code>;</code>
<code> </code><code>cin>>p1->sex;</code>
<code> </code><code>cout<<</code><code>"Chinese:"</code><code>;</code>
<code> </code><code>cin>>p1->chinese;</code>
<code> </code><code>cout<<</code><code>"Math:"</code><code>;</code>
<code> </code><code>cin>>p1->math;</code>
<code> </code><code>cout<<</code><code>"English:"</code><code>;</code>
<code> </code><code>cin>>p1->eng;</code>
<code> </code><code>cout<<</code><code>"C语言:"</code><code>;</code>
<code> </code><code>cin>>p1->c;</code>
<code> </code><code>p1->id=</code><code>this</code><code>->num+1;</code>
<code> </code><code>p1->sum=p1->chinese+p1->math+p1->eng+p1->c;</code>
<code> </code><code>this</code><code>->num++;</code>
<code> </code><code>p2=p1;</code>
<code> </code><code>p1=</code><code>new</code> <code>struct</code> <code>student;</code>
<code> </code><code>cout<<</code><code>"\n是否继续输入(Y/N):"</code><code>;</code>
<code> </code><code>cin>>res;</code>
<code> </code><code>if</code><code>(res ==</code><code>'N'</code><code>|| res == </code><code>'n'</code><code>)</code>
<code> </code><code>break</code><code>;</code>
<code> </code><code>}</code>
<code> </code><code>p2->next=NULL;</code>
<code>void</code> <code>stuList::_print()</code>
<code> </code><code>struct</code> <code>student *temp;</code>
<code> </code><code>temp=</code><code>this</code><code>->head;</code>
<code> </code><code>cout<<</code><code>"id"</code><code><<setw(5)<<</code><code>"name"</code><code><<setw(5)<<</code><code>"sex"</code><code><<setw(10)<<</code><code>"Chinese"</code><code><<setw(5)</code>
<code> </code><code><<</code><code>"Math"</code><code><<setw(8)<<</code><code>"English"</code><code><<setw(5)<<</code><code>"C"</code><code><<setw(5)<<</code><code>"Sum"</code><code><<endl;</code>
<code> </code><code>for</code><code>(</code><code>int</code> <code>i=0;i<</code><code>this</code><code>->num;i++)</code>
<code> </code><code>cout<<temp->id<<setw(5)<<temp->name<<setw(5)<<temp->sex<<setw(5)<<temp->chinese<<setw(5)</code>
<code> </code><code><<temp->math<<setw(5)<<temp->eng<<setw(5)<<temp->c<<setw(5)<<temp->sum<<endl;</code>
<code> </code><code>temp=temp->next;</code>
<code> </code><code>cout<<endl;</code>
<code> </code><code>cout<<</code><code>"------------------------------------------------------------总人数:"</code><code><<</code><code>this</code><code>->num;</code>
<code>void</code> <code>stuList::_sort()</code>
<code> </code><code>struct</code> <code>student *first; </code><code>/*排列后有序链的表头指针*/</code>
<code> </code><code>struct</code> <code>student *tail; </code><code>/*排列后有序链的表尾指针*/</code>
<code> </code><code>struct</code> <code>student *p_max; </code>
<code> </code><code>struct</code> <code>student *max;</code>
<code> </code><code>struct</code> <code>student *p;</code>
<code> </code><code>p=</code><code>this</code><code>->head;</code>
<code> </code><code>if</code><code>(</code><code>this</code><code>->head!=NULL)</code>
<code> </code><code>first=NULL;</code>
<code> </code><code>while</code> <code>(head != NULL)</code>
<code> </code><code>{</code>
<code> </code><code>for</code> <code>(p=</code><code>this</code><code>->head,max=</code><code>this</code><code>->head; p->next!=NULL; p=p->next)</code>
<code> </code><code>{</code>
<code> </code><code>if</code> <code>(p->next->sum > max->sum) </code><code>//以总分排序</code>
<code> </code><code>{</code>
<code> </code><code>p_max=p;</code>
<code> </code><code>max=p->next;</code>
<code> </code><code>}</code>
<code> </code><code>}</code>
<code> </code><code>if</code><code>(first==NULL)</code>
<code> </code><code>first=max;</code>
<code> </code><code>tail=max;</code>
<code> </code><code>else</code>
<code> </code><code>tail->next=max;</code>
<code> </code><code>if</code><code>(max==</code><code>this</code><code>->head)</code>
<code> </code><code>this</code><code>->head=</code><code>this</code><code>->head->next;</code>
<code> </code><code>p_max->next=max->next;</code>
<code> </code><code>}</code>
<code> </code><code>if</code><code>(first!=NULL)</code>
<code> </code><code>tail->next=NULL;</code>
<code> </code><code>cout<<</code><code>"id"</code><code><<setw(5)<<</code><code>"name"</code><code><<setw(5)<<</code><code>"sex"</code><code><<setw(10)<<</code><code>"Chinese"</code><code><<setw(5)</code>
<code> </code><code><<</code><code>"Math"</code><code><<setw(8)<<</code><code>"English"</code><code><<setw(5)<<</code><code>"C"</code><code><<setw(5)<<</code><code>"Sum"</code><code><<endl;</code>
<code> </code><code>for</code><code>(</code><code>int</code> <code>i=0;i<</code><code>this</code><code>->num;i++)</code>
<code> </code><code>cout<<first->id<<setw(5)<<first->name<<setw(5)<<first->sex<<setw(5)<<first->chinese<<setw(5)</code>
<code> </code><code><<first->math<<setw(5)<<first->eng<<setw(5)<<first->c<<setw(5)<<first->sum<<endl;</code>
<code> </code><code>first=first->next;</code>
<code>//stu.cpp 调用class。h</code>
<code>#include "class.h"</code>
<code>int</code> <code>main()</code>
<code> </code><code>stuList A;</code>
<code> </code><code>A._creat();</code>
<code> </code><code>A._print();</code>
<code> </code><code>A._sort();</code>
<code> </code><code>return</code> <code>0;</code>
本文转自 nw01f 51CTO博客,原文链接:http://blog.51cto.com/dearch/1758724,如需转载请自行联系原作者