求解答如何退票时只退一定数量的票而不是按照人名全部退


 
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");
    }
}

现在的代码就是按照人名退的?不知道你的意思是什么