【发布时间】: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 && front ==-1)->if(rear==-1 && front ==-1) -
这不是一回事吗?
-
仔细观察:
=vs== -
提示:通常好的做法是在#define - #define SIZE 5 中使用大写字母