LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 553|回复: 1

关于队列的小问题!!

[复制链接]
发表于 2004-10-17 21:39:26 | 显示全部楼层 |阅读模式
队列不能显示正确结果!!好久不能解决。求救高手^_^

我的代码如下:
#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等现象。
郁闷很久了。不知是哪个地方出错了。
发表于 2004-10-17 23:33:03 | 显示全部楼层
你在Q.rear==9时候return了,难道不想在Q.base[9]放东西
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表