Ich bin sehr neu in der Programmierung. Ich wollte ein Programm schreiben, um eine Warteschlange mit einem Array (zirkuläre Warteschlange) zu implementieren. Ich denke, das Einfügen von & Löschen von Element aus der Warteschlange Funktionen sind korrekt, aber es gibt ein Problem in der Anzeigefunktion. Wenn die Warteschlange voll ist, wenn ich versuche, mehr Elemente einzufügen, zeigt es nicht "QUEUE FULL" wie pro Funktion, es zeigt einige Abfallwerte neben Elementen.Wo ist der Fehler in diesem C-Code?
#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;
}
Haben Sie einen Debugger verwendet? – MikeCAT
Warum wird 'm + 1' anstelle von' m' verwendet, um die Zahl zu teilen? Es besteht die Gefahr, dass das Array außerhalb des Bereichs liegt! – MikeCAT
Ich schrieb diesen Code in Visual Studio 12 @ MikeCAT – Fsalad