hudld123 2022-12-11 19:54 采纳率: 60%
浏览 76
已结题

火车订票功能找不到错误在哪了

struct node
{  
   char name[12];         //乘客姓名
   char IDcard[20];        //乘客身份证号码
   int TicketNum;         //订票数
   float FareSum;         //总票价
   struct node *next;      //指针成员
}*head;
struct Dtime
{  
   short year;
   short month;
   short day;
   short hour;
   short minute;
};
struct train
{   
   char terminal[20];          //终点站
   char sequence[20];         //车次
   struct Dtime StartTime;     //发车时间
   float fare;                //票价
   int SpareTicketNum;       //余票数
   struct node *head;         //指针成员,指向该线路第一个订票乘客
   struct train *next;
}*line,*p1,*p2;
void dp()                                      //订票功能 
{
    train *j;
    j=line;
    j->head=line->head;
    char checi[20];
    int  num;
    printf("车次:");
       scanf("%s",checi);
    printf("订票数:");
       scanf("%d",&num); 
    while(line)
    {
        if(strcmp(line->sequence,checi)==0)
        {
            if(line->SpareTicketNum>=num)
              {
                  line->SpareTicketNum-=num;            //余票数减少 
                  head=(struct node *)malloc(sizeof(struct node));
                  printf("姓名:");
                  scanf("%s",head->name); 
                printf("身份证号:");
                  scanf("%s",head->IDcard);
                printf("总票价:%.2f\n",num*j->fare);
                head->TicketNum=num;
                head->FareSum=num*j->fare;
                head->next=NULL;
                while(line->head)
                   line->head=line->head->next;
                line->head=head;
                line->head->next=NULL;
                line->head=j->head;
                line=j;
                break;
              }
            else
              {
                printf("余票数不足,订票失败!\n");
                line=j;
                break;
              }
        }
        line=line->next;
    }
}

我的思路是链表line存列车信息,每个line结点有一个乘客信息链表head。每调用一次dp()函数,就产生一个head结点接入到相应的line链表的head链表。但我多次调用dp()函数输入多组乘客信息到相同列车时,相应的line的head链表只有我最后一次输入的乘客信息,就是head链表没连上,找不到原因了

  • 写回答

2条回答 默认 最新

  • 快乐鹦鹉 2022-12-12 09:09
    关注
    train *j;
        j=line;
        j->head=line->head;
    
    

    这直接就崩了吧,j和line你在哪分配空间了啊?

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月12日
  • 创建了问题 12月11日

悬赏问题

  • ¥15 暴雪战网api相关问题
  • ¥15 而使用UE5引擎的 工具选项里 打开c++ visual studio 就会有部分显示加载失败 如图 加载失败的这张图 请问是什么原因
  • ¥15 mysql 对多个字段模糊查询,返回第一个匹配的字段
  • ¥15 the testing results of the whole dataset is empty
  • ¥15 can问题,往哥解决
  • ¥15 FFmpeg 成功推流到 Nginx RTMP 服务器但无法用 ffplay 或 VLC 播放
  • ¥15 请修改以下C语言代码使其能正确输出最短路径
  • ¥20 抖音商城拉码器安卓报错求解决办法或者有新的拉码脚本也可以介绍一下
  • ¥15 MPLAB IDE V2.35 报错make[2]: *** [build/default/production/_ext/1472/MSSP_I2C.p1] Error 1
  • ¥15 在国外文献网站里点击view pdf 加载异常缓慢甚至加载不出来。