gpt4 book ai didi

c - 这段C代码的bug在哪里?

转载 作者:行者123 更新时间:2023-11-30 20:50:54 26 4
gpt4 key购买 nike

我对编程很陌生。我想写一个程序来实现带有数组的队列(循环队列)。我认为从队列函数中插入和删除元素是正确的,但显示函数存在一些问题。当队列已满时,如果我尝试插入更多元素,它不会根据函数显示“队列已满”,而是会在元素旁边显示一些垃圾值。

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>

#define m 3 // maximum size of array
int Q[m];
int f=-1,r=-1,s; //f=front,r=rear,s=rear in another term for finding wheather is

queue full


int enQueue(int item){
s = (r+1)%(m+1);
if(f == s)
printf("\nQUEUE FULL");
else{
Q[s] = item;
r = s;
}

return 0;
}


int deQueue(){
int item;
if(f == r)
printf("\nQUEUE UNDERFLOW");
else{
f = (f+1)%(m+1);
item = Q[f];
Q[f] = NULL;
}

return 0;
}

void displayQueue(){
int i;
if(f == r)
printf(" \n The queue is empty\n");
else {
printf("\nQUEUE IS : \n");
for(i=f+1; i<=s; i++) {
printf("%d\t", Q[i]);
}
printf("\n\n********************************************");
}

}



int main(){
int item,i,j;

while (1){
printf("\n\nENTER ITEM TO INSERT : ");
scanf("%d", &item);

enQueue(item);
displayQueue();
}

_getch();
return 0;
}

最佳答案

代码有很多问题。本回复仅涉及问题范围内的内容。希望对您有所帮助。

int enQueue(int item){
if(r+1 >= m) //check against queue size first...
printf("\nQUEUE FULL");
else{
s = (r+1)%(m);
Q[s] = item;
r = s;
}
return 0; //the return value part could be written better...
}

关于c - 这段C代码的bug在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36963521/

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