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链表没连上,找不到原因了