アルゴリズムの本にあった、キューのプログラムの動作がわからないので解説してほしいです。
具体的には関数enqueueとdequeueを行った時の配列ないがどのようになるかがわからないです。
#include <stdio.h>
#define MAX 4
void enquene(char *Q,char x);
char dequeue(char *Q);
void initialize(char *Q);
int empty(char *Q);
int head=0;
int tail=0;
int number=0;
void enqueue(char *Q,char x){
if(number<MAX){
number++;
tail=(tail%MAX)+1;
Q[tail]=x;
}
else{
printf("Queue Q is overflows.\n");
}
}
char dequeue(char *Q){
if(number>0){
number--;
head=(head%MAX)+1;
return(Q[head]);
}
else{
printf("Queue Q is empty.\n");
return('0');
}
}
void initialize(char *Q){
int i;
head=0;
tail=0;
number=0;
for(i=0;i<MAX;i++){
Q[i]='\0';
}
}
int empty(char *Q){
if(number==0){
return(1);
}
return(0);
}
int main(void){
char x;
char Q[MAX];
enqueue(Q,'a');
enqueue(Q,'b');
enqueue(Q,'c');
x=dequeue(Q);
x=dequeue(Q);
enqueue(Q,'d');
x=dequeue(Q);
enqueue(Q,'e');
while(!empty(Q)){
printf("%c",dequeue(Q));
}
printf("\n");
return(0);
}
あなたの回答
tips
プレビュー