队列bug 找了半天也不知道哪里不对
真的不知道为什么出队的结果总是空。。遍历完了数组难道队列就会直接让rear=front吗。。。很无奈。希望大家帮忙看看谢谢顺便附赠下大家解决bug的经验 求大神分享 万分感谢#include<stdio.h>
#include<malloc.h>
#define TRUE 1
#define FALSE 0
typedef struct Queue
{
int *pbase;
int rear;
int front;
}queue;
void init(queue* pq);
bool full(queue* pq);
bool enqueue(queue* pq,int val);
void travel(queue*pq);
bool outqueue(queue *pq,int *val);
int main()
{
queue q;
int val;
init(&q);
enqueue(&q,1);
enqueue(&q,2);
enqueue(&q,3);
enqueue(&q,4);
travel(&q);
if(outqueue(&q,&val))
{
printf("success");
}
else
{
printf("default");
}
travel(&q);
return 0;
}
void init(queue* pq)
{
pq->pbase=(int *)malloc(sizeof(int)*6);
pq->rear=0;
pq->front=0;
}
bool full(queue* pq)
{
if((pq->rear+1)%6==pq->front)
{
printf("is full");
return true;
}
else
{
return false;
}
}
bool enqueue(queue* pq,int val)
{
if(full(pq))
{
printf("full");
return false;
}
else
{
pq->pbase[pq->rear]=val;
pq->rear=(pq->rear+1)%6;
return true;
}
}
void travel(queue* pq)
{
while(pq->rear!=pq->front)
{
printf("%d",pq->pbase[pq->front]);
pq->front=(pq->front+1)%6;
}
printf("\n");
}
bool empty(queue *pq)
{
if(pq->front==pq->rear)
{
return true;
}
else
{
return false;
}
}
bool outqueue(queue *pq,int *val)
{
if(empty(pq))
{
printf("empty");
return false;
}
else
{
*val=pq->pbase[pq->front];
pq->front=(pq->front+1)%6;
return false;
}
}