gpt4 book ai didi

C 链表队列 : What should I return when trying to dequeue an empty queue?

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

尝试使空队列出列时我应该返回什么?

我的教科书告诉我要返回一个表示错误的“键”。

我尝试过:

Element queueEmpty()
{
Element elem = {'!'};
printf("Queue is empty");
return elem;
}

但我认为这不是一个好的设计,因为“!”不是错误的唯一表示。

(假设任何字符数据都可以是有效输入)

我的队列 ADT 和出队功能的完整代码:

typedef struct
{
char data;
} Element;

typedef struct Node *nodePtr;
typedef struct Node
{
Element elem;
nodePtr next;
} Node;

nodePtr front[MAX_QUEUES];
nodePtr rear[MAX_QUEUES];





Element dequeue(int i)
{
Element elem;
nodePtr temp = front[i];
if(!front[i])
{
return queueEmpty();
}
elem = temp->elem;
front[i] = temp->next;
free(temp);
return elem;
}

仅供引用:我的教科书是:“C 语言数据结构基础”,作者:Horowitz、Sahni、Anderson-Freed

最佳答案

为什么不返回一个整数并使用指针作为附加输出,如下所示:

int dequeue (int i, Element *elem)
{
nodePtr temp = front[i];
if(!front[i])
{
return -1; // Error parttern
}
*elem = temp->elem;
front[i] = temp->next;
free(temp);
return elem;
}

调用:

Element elem;
if(dequeue(i,&elem) == -1)
{
// Queue was empty
}
else
{
// do what you want to do
}

关于C 链表队列 : What should I return when trying to dequeue an empty queue?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36540754/

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