c - 删除队列后显示队列的数据
问题描述
我正在使用 c 中的 struct 创建一个队列来存储客户。我可以删除客户节点,但我想显示已删除客户的信息,即姓名和条形码编号
typedef struct customer {
char name[50]; // the customer's name
double barcodeNumber; // the barcode number from the customer's ticket
struct customer *next; // a pointer to the next customer in the queue after this one
}
Customer;
typedef struct eventQueue {
Customer *head; // points to the customer at the front/head of the queue
Customer *tail; // points to the customer at the end/tail of the queue
} EventQueue;
这是我的删除功能
int removeCustomer(EventQueue *qPtr, Customer *c)
{
if(qPtr == NULL)
return INVALID_INPUT_PARAMETER;
if(c == NULL)
return INVALID_INPUT_PARAMETER;
if(qPtr->head == NULL)
return INVALID_QUEUE_OPERATION;
char *name;
double barcode;
strcpy(c->name,name);
barcodeCopy = c->barcode;
c=qPtr->head;
qPtr->head=qPtr->head->next;
free(c);
// Value to be returned if a function is completed successfully
return SUCCESS;
}
这是我的代码实现
void main()
{
printf("\nAttempting to remove customer from queue..");
// (attempt to) remove / pop a customer from the queue
Customer customerInfo;
// a variable to receive the customer data removed from the queue
result = removeCustomer(pQueue, &customerInfo); // this calls your implementation of removeCustomer()
// if customer wasn't removed successfully
if (result != SUCCESS)
{
printf("ERROR: Unable to remove customer from queue.\n");
}
else
{
printf("..customer removed successfully!\n");
printf("The customer removed was %s who was barcode number %.0lf.\n", customerInfo.name, customerInfo.barcodeNumber);}
}
解决方案
只需分解 removeCustomer 方法中的操作
从队列中获取“第一/前”客户
Customer* first = qPtr->head;
将其数据复制到您作为参数传递的客户信息结构中
// using first for clarity but qPtr->head->name also works
strcpy(c->name, first->name);
c->barcodeNumber = first->barcodeNumber;
更新队列 - 移除前面
qPtr->head = qPtr->head->next;
删除第一个客户(现已提取)
free(first);
推荐阅读
- python - 如何以更有效的方式搜索最长的子字符串?
- python - python 编译器是否在 python 中使用 import 语句时编译所有代码?
- passwords - 是否可以在 Keycloak 中查看哪些用户从未更新过密码?
- jenkins - debian pbuilder Jenkins 插件缺少源/格式文件
- php - PHP检查数组键是否等于特定的字符串值
- python - Seaborn catplot“TypeError:`x` 和 `y` 变量似乎都不是数字”,但 Y 是浮点数
- c - 数制转换器
- react-native - 双击时防止博览会视频调整大小
- flutter - FAILURE:构建失败并出现异常。* 出了什么问题:无法启动守护进程
- kotlin - 如何从 Flow 中转换每个元素
- > 并返回新流
- >