我正在使用c中的struct创建一个队列来存储客户。我可以删除客户节点,但我希望显示已删除客户的信息,即名称和条形码编号
类型定义结构客户{
char name[50];//客户的名称
double barcodeNumber;//客户票据中的条形码编号
struct customer*next;//指向此客户之后队列中下一个客户的指针
}
顾客
类型定义结构事件队列{
Customer*head;//指向队列前面/最前面的客户
Customer*tail;//指向队列末尾/末尾的客户
}事件队列;
这是我的删除功能
int removeCustomer(事件队列*qPtr,客户*c)
{
if(qPtr==NULL)
返回无效的_输入_参数;
如果(c==NULL)
返回无效的_输入_参数;
如果(qPtr->;head==NULL)
返回无效的队列操作;
字符*名称;
双条码;
strcpy(c->;名称,名称);
barcodeCopy=c->;条形码;
c=qPtr->;压头;
qPtr->;head=qPtr->;head->;next;
免费(c);
//如果函数成功完成,则返回的值
回归成功;
}
这是我对代码的实现
void main()
{
printf(“试图将客户从队列中删除…”);
//(尝试)从队列中删除/弹出客户
客户信息;
//用于接收从队列中删除的客户数据的变量
result=removeCustomer(pQueue,&;customerInfo);//这将调用removeCustomer()的实现
//如果客户未成功删除
如果(结果!=成功)
{
printf(“错误:无法从队列中删除客户。\n”);
}
其他的
{
printf(“.customer已成功删除!\n”);
printf(“删除的客户是%s,其条形码编号为%.0lf。\n”“customerInfo.name,customerInfo.barcodeNumber);}
}
只需分解removeCustomer方法中的操作
-
获得;“第一/前面”;排队的顾客
Customer*first=qPtr->;头部 -
将其数据复制到作为参数传递的Customer info结构
//为了清晰起见,使用first,但使用qPtr->;头->;名称也起作用
strcpy(c->;名称,第一个->;名称)
c->;条形码编号=第一个->;条码号 -
更新队列-删除前端
qPtr->;压头=qPtr->;头->;其次 -
删除第一个客户(现在已提取)
免费(第一)