|
队列不能显示正确结果!!好久不能解决。求救高手^_^
我的代码如下:
#include <stdio.h>
#include <malloc.h>
#define MAXSIZE 10
typedef struct _queue{
int *base;
int front;
int rear;
}QUEUE;
void init(QUEUE &Q)
{
Q.base=(int *)malloc(MAXSIZE*sizeof(int));
Q.front=Q.rear=0;
}
void Enqueue(QUEUE &Q,int e)
{
if((Q.rear+1)%MAXSIZE==Q.front){
printf("\nQueue is full.\n");
return;
}
Q.base[Q.rear]=e;
Q.rear=(Q.rear+1)%MAXSIZE;
}
void Dequeue(QUEUE &Q,int &e)
{
if(Q.rear==Q.front){
printf("\nQueue is empty.\n");
return;
}
e=Q.base[Q.front];
Q.front=(Q.front+1)%MAXSIZE;
}
void main()
{
int i,e;
QUEUE Q;
init(Q);
for(i=0;i<MAXSIZE;i++)
Enqueue(Q,i+1);
for(i=0;i<MAXSIZE;i++){
Dequeue(Q,e);
printf("%d\t",e);
}
printf("\n");
}
运行结果如下:
Queue is full.
1 2 3 4 5 6 7 8 9
Queue is empty.
9
感觉不应该出现Queue is empty和Queue is full等现象。
郁闷很久了。不知是哪个地方出错了。 |
|