「已注销」 2019-02-19 22:28 采纳率: 0%
浏览 436

C语言单链表这题代码不知道哪错了http://acm.zzuli.edu.cn/problem.php?id=1194

#include <stdio.h>
#include <stdlib.h>
#include<string.h>

struct grades {
char num[100];
char name[100];
int math,chinese,english;
int sum;
struct grades *next;
};

typedef struct grades Grades,*GRADES;

int main() {
int n, i, sum1;
int chinese1, english1 ,math1 ;
char num1[100],name1[100];
GRADES head, p, g;
head = p = (GRADES)malloc(sizeof(Grades));
head->next=NULL;

scanf("%d",&n);

for(i = 1; i<=n; i++)
{

    scanf("%s",num1);
    scanf("%s",name1);
    scanf("%d%d%d",&math1,&chinese1,&english1);
    sum1 = math1 + chinese1 + english1;//输入数据

        g = (GRADES)malloc(sizeof(Grades));
        g->chinese = chinese1;
        g->english = english1;
        g->math = math1;
        g->sum = sum1;
        g->next = NULL;
        strcpy(g->num,num1);
        strcpy(g->name,name1);

        p=head;
        while(p->next!=NULL)//找到插入节点
        {
            if(p->next->sum < g->sum)
                    break;
            if(p->next->sum == g->sum)
                if(strcmp(p->next->num,g->num)<0)
                    break;
                p=p->next;
        }
        g->next = p->next;//用头插法实现从高到低排序
        p->next = g;
}


p = head->next;
while(p)//输出
{
    printf("%s ",p->num);
    printf("%s ",p->name);
    printf("%d ",p->math);
    printf("%d ",p->chinese);
    printf("%d ",p->english);
    printf("%d\n",p->sum);
    p = p->next;
}
return 0;

}

  • 写回答

1条回答 默认 最新

  • threenewbee 2019-02-19 23:50
    关注

    g->sum = sum1;
    下面加上
    g->next = null;

    评论

报告相同问题?

悬赏问题

  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型