【问题标题】:My queue program doesn't display elements after inserting我的队列程序在插入后不显示元素
【发布时间】:2021-04-23 10:07:21
【问题描述】:

我尝试将元素添加到队列中,但显示元素功能不起作用。此外,当我单击删除而不插入任何元素时,它不会执行我为空队列所做的 if 语句。 我不知道问题出在哪里,但请帮我解决这个问题。

这是插入队列元素的函数:-

int num;
if(rear==MAXSIZE-1)
{
    printf("\nQueue is full (Queue overflow)");
    return;
} else {
    if(front==-1)
        front=0;
    printf("\nEnter the element to be inserted : ");
    scanf(" %d", &num);
    rear++;
    queue[rear] = num;
}

这是删除队列元素的函数:-

if(front==-1 && front > rear)
{
    printf("\nQueue is empty (Queue underflow)");
    return;
} else {
    int num;
    num=queue[front];
    printf("\nDeleted element is : %d",num);
    front++;
}

这是显示队列元素的函数:-

if(front==-1)
{
    printf("\nQueue is empty (Queue underflow)");
} else {
    printf("\nQueue elements are : \n");
    for(int i=front; i<=rear; i++)
    printf("%d\t",queue[i]);
}

【问题讨论】:

  • 您的代码不完整。您不显示“函数”,而只显示可能是函数体的代码 sn-ps。我们不知道数据类型、您如何调用函数以及您使用什么数据。请edit您的问题并创建一个minimal reproducible example,即我们可以编译和运行的程序与示例输入、您获得的实际输出和预期输出一起。
  • if(front==-1 &amp;&amp; front &gt; rear)
  • if(front==-1 &amp;&amp; front &gt; rear) 在逻辑上不正确。至少,&amp;&amp; 应该是||

标签: c queue


【解决方案1】:

队列通常构建为循环缓冲区,因此入队和出队更加舒适。我刚刚找到了一个实现here。这看起来像您正在搜索的代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多