gpt4 book ai didi

c - 从队列中删除偶数

转载 作者:行者123 更新时间:2023-11-30 17:09:00 25 4
gpt4 key购买 nike

当我尝试在 C 编程中从队列中删除偶数时,我陷入了困境。这是代码:

void deleteEven(Queue *que)
{
while (!isEmptyQueue(que)) {
if ((que->list.first->data) % 2 == 0) {
dequeue(que->list.first->data);
}
}
}

int dequeue(Queue *que)
{
int x;
if (que->list.first!= NULL) {
x= ((que->list).first)->data;
remove(&que->list, 0);
que->list.size--;
return x;
}
else return NULL;
}

我想做的是首先,我尝试检查队列是否为空。然后我会得到链表头和模数为2,如果得到0意味着它是偶数,然后我会将它从队列中出队。

但是,使用这些代码,当我尝试将偶数从队列中出列时,它只是停止工作并且不显示任何错误消息。

有人知道怎么解决这个问题吗?提前致谢。

最佳答案

根据您编辑的版本以及我对remove()函数和enqueue()函数的想象,我认为您真正需要的是如下所示。

void deleteEven(Queue *que)
{
Queue *odd =(Queue*) malloc(sizeof(Queue));
odd->list.size = 0;
odd->list.first = NULL;
while (!isEmptyQueue(que)) {
if ((que->list.first->data) % 2 != 0) {
enqueue(odd, que->list.first->data);
}
//dequeue(que->list.first->data); wrong
dequeue(que); // passing the queue to dequeue function, not an integer
}
while (!isEmptyQueue(odd)) {
enqueue(que, odd->list.first->data);
dequeue(odd); // simply do dequeue on odd
}
free(odd);
}

因为没有任何错误消息或崩溃发生,我认为该错误是由于您滥用出队函数而导致的,而该函数根本没有出队。

关于c - 从队列中删除偶数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33450727/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com