提问人:bFur4list 提问时间:5/25/2023 最后编辑:bFur4list 更新时间:5/25/2023 访问量:57
关于以递归方式将数据排队到循环队列中的混淆
Confusion about enqueue-ing datas into circular-queue recursively
问:
事实上,这不是一个主要问题,我在练习使用循环队列进行 BST 遍历时遇到了这个问题。
我试图以递归方式定义无序遍历,因此排队数据也以递归方式定义。
这是我尝试的一些示例,如下所示:
typedef int element;
typedef struct {
element data[MAX_QUEUE_SIZE];
int front, rear;
} QueueType;
void init_queue(QueueType* q)
{
q->front = q->rear = 0;
}
int is_full(QueueType* q)
{
return ((q->rear + 1) % MAX_QUEUE_SIZE == q->front);
}
void enqueue(QueueType* q, element item)
{
if (is_full(q))
error("Queue is full");
q->rear = (q->rear + 1) % MAX_QUEUE_SIZE;
q->data[q->rear] = item;
}
void q_factorial_enqueue(QueueType* q, int data)
{
enqueue(q, data);
if (data != 0)
{
q_factorial_enqueue(q, data - 1);
}
}
void queue_print(QueueType* q)
{
printf("QUEUE(front=%d rear=%d) = ", q->front, q->rear);
if (!is_empty(q)) {
int i = q->front;
do {
i = (i + 1) % (MAX_QUEUE_SIZE);
printf("%d | ", q->data[i]);
} while (i == q->rear);
}
printf("\n");
}
以下是主要功能:
int main(void)
{
QueueType queue;
int element;
init_queue(&queue); //Initialization
q_factorial_enqueue(&queue, 5);
queue_print(&queue);
}
我想将数据“5 4 3 2 1”排队到循环队列,但是如果我打印循环队列的元素,则没有正确的输入,也没有输出,因为没有输入。
我错过了什么以递归方式定义排队?
答: 暂无答案
评论
queue_print