void return_tkt(){//退票模块
struct airline *info;
linklist *p1,*p2,*head;//客户指针
char cusname[10];//退票客户姓名
if(!(info=find())) return;//调用查询函数根据客户提供的航线进行搜索 info是指向这一条航线的指针 find可以输入航线
head=info->order;//指向这条航线里订票成功的乘客的指针
p1=head;
printf("请输入退票客户的姓名:");
scanf("%s",cusname);
while(p1!=NULL) {//根据客户提供的姓名到订票客户名单域进行查询
if(!strcmp(cusname,p1->name)) break;//用strcmp比较有匹配 名字相同可以删除
p2=p1;p1=p1->next;//p2一直是p1的前驱
}
if(p1==NULL) {
printf("对不起你没有订过票!\n"); //若未找到退出本模块
return;
} else
{ //若信息查询成功删除订票客户名单域中的信息
if(p1==head)
{
head=p1->next;
free(p1);
}//若删除的是头指针可以直接删除
else
{
p2=p1->next;
free(p1);
}//删除了p1 倒序 第一个订票的在底下
info->ticket_sur+=p1->order_amount;//改变余票量 余票量加上已经退了的p1
printf("成功退票!!\n");
}
}
现在的代码就是按照人名退的?不知道你的意思是什么