【问题标题】:Implementing a simple queue using array使用数组实现一个简单的队列
【发布时间】:2021-09-22 04:39:31
【问题描述】:

我尝试调试这个小代码;我是一个初学者,正在努力弄清楚为什么我的身后价值没有增加。它在 else 部分被重新初始化为 0。我想将连续的元素存储在队列中,但我不能。 提前致谢 我在最后添加了代码的输出。

这是初始声明和入队函数

//queue implementation using arrays
#include <stdio.h>
#include <stdlib.h>
#define size 5

int Queue[size];
int rear =-1;
int front =-1;

void enqueue(int value){
    if(rear == size-1){
        printf("\nOVERFLOW CONDITION\n");
    }
    else  if(rear=-1 && front ==-1){
        front = 0;
        rear = 0;
        Queue[rear]=value;
        printf("ELSE IF\n");
        printf("Rear val after:%d\n\n",rear);
    }
    else{
        printf("Rear val before:%d\n",rear );
        printf("ELSE\n");
        rear++;
        printf("Rear val after:%d\n",rear );
        Queue[rear]= value;
        printf("Rear val at end of else:%d\n\n",rear );
    }

这是主要功能:

int main(){

    enqueue(4);
    enqueue(2);
    enqueue(33);

    return 0;   
}

我的输出:

ELSE IF
Rear val after:0

Rear val before:0
ELSE
Rear val after:1
Rear val at end of else: =1

Rear val before:0
ELSE
Rear val after:1
Rear val at end of else: =1


--------------------------------
Process exited after 0.01729 seconds with return value 0
Press any key to continue . . .

【问题讨论】:

  • if(rear=-1 &amp;&amp; front ==-1) -> if(rear==-1 &amp;&amp; front ==-1)
  • 这不是一回事吗?
  • 仔细观察:= vs ==
  • 提示:通常好的做法是在#define - #define SIZE 5 中使用大写字母

标签: c queue


【解决方案1】:

在比较后面的值时,您在 else if 条件中遗漏了一个“=”。

if(rear=-1 && front==-1)

应该是

if(rear==-1 && front==-1)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-30
    相关资源
    最近更新 更多