#include <iostream>
using namespace std;
struct student
{
int num;
char name[10];
float score[3];
float sum;
student *next;
};
void main()
{
student a[5];
student *h, *curr, *temp, *last; //h头指针,curr当前指针,last当前指针的上一个指针(curr的上一个指针)
for (int i = 0; i < 5; i++)
{
cout << "student" << i + 1 << ":"<<endl;
cin >> a[i].name >> a[i].num >> a[i].score[0] >> a[i].score[1] >> a[i].score[2];
a[i].sum = a[i].score[0] + a[i].score[1] + a[i].score[2];
}
h = a;
for (int i = 0; i<4; i++)
a[i].next = &a[i + 1];
a[4].next = NULL;
for (int j = 0; j<4; j++)
{
curr = h;
for (int i = 0; i<4 - j; i++)
{
if (curr->sum>curr->next->sum)
{
if (i == 0) //将第一个结点和第二个结点交换,此时需要改变头指针
{
temp = h;
h = h->next; //将头指针设为第二个节点
temp->next = h->next; //令第一个节点后面接第三个节点
h->next = temp; //令第二个节点后面接第一个节点
curr = h->next;
con
C++对单向链表进行排序
最新推荐文章于 2025-02-24 23:13:19 发布

最低0.47元/天 解锁文章
397

被折叠的 条评论
为什么被折叠?



