Sasakisouji 2021-12-17 13:27 采纳率: 71.4%
浏览 16
已结题

动态链表使用气泡排序不成功

创建动态链表,输入对应得分情况后按照成绩排序,但输入两组以上数据时程序会崩溃,求解答


#include"stdio.h"
#include"string.h"
#include"stdlib.h"

struct student
{
    int id;
    char name[20];
    float score;
    struct student *next;
};

void order(struct student a[10]);

int i,n,j;float m;

int main()
{
    struct student *p1,*p2,*head;
    struct student a[10];
    printf("输入选手人数:\n");
    scanf("%d",&n);getchar();
    printf("输入每个选手的id号、姓名及得分情况:\n");
    p1=p2=(struct student*)malloc(sizeof(struct student));
    for(i=0;i<n;i++)
    {
        printf("Input id and name:\n");
        scanf("%d %s",&p2->id,&p2->name);
        printf("Input 5 scores:\n");
        p2->score=0;
        for(j=0;j<5;j++)
        {
            scanf("%f",&m);
            p2->score+=m/5.0;
        }
        if(i==0){head=p2;head->next=NULL;}
        else 
        {
            head->next=p2;
            p2=p2->next;
        }
        p2=(struct student*)malloc(sizeof(struct student));
    }
    p2->next=NULL;
    for(i=0;i<n;i++)
    {

        a[i].id=p1->id;
        strcpy(a[i].name,p1->name);
        a[i].score=p1->score;
        p1=p1->next;
    }
    order(a);
    printf("排名及每人平均分:\n");
    for(i=0;i<n;i++)
        printf("%d   %s   %.2f\n",a[i].id,a[i].name,a[i].score);
}

void order(struct student a[10])
{
    struct student w;w.next=NULL;
    for(i=0;i<n-1;i++)
        for(j=i+1;j<n;j++)
        {
            if(a[i].score<a[j].score)
            {
                w.id=a[i].id;
                strcpy(w.name,a[i].name);
                w.score=a[i].score;
                a[i].id=a[j].id;
                strcpy(a[i].name,a[j].name);
                a[i].score=a[j].score;
                a[j].id=w.id;
                strcpy(a[j].name,w.name);
                a[j].score=w.score;
            }
        }
}

输入数据为3和2时的结果:

img

img

预期结果:

img

望解答T^T

  • 写回答

1条回答 默认 最新

  • 於黾 2021-12-17 13:35
    关注

    不知道你为什么会有p1,p2,2个指针,是在倒腾啥
    执行排序前,先打印你自己的链表,看到底存进去个什么东西

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月25日
  • 已采纳回答 12月17日
  • 创建了问题 12月17日

悬赏问题

  • ¥30 STM32 INMP441无法读取数据
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境