主题:写了个队列反向输出程序,哪里错了啊?
/*编写程序,从键盘上输入一个整数序列a1,a2,……,an,若ai>0,则ai进队列;若ai<0,则
对头元素出队列;当ai=0时算法结束。利用循环队列完成*/
#include<stdio.h>
#define MAXSIZE 5
typedef struct
{
int *base;
int front;
int rear;
}cqueue;
/*函数声明*/
void fun(void);
int enqueue();
int outqueue();
void initqueue();
void list();
/*算法*/
void fun(void)
{
cqueue cq;
int x;
int i;
scanf("%d",&x);
while(x!=0)
{
if(x>0)
{
if(!enqueue(&cq,x))
{ printf("The cycle queue is full!\n"); break;}
}
else if(!outqueue(&cq,&x))
{ printf("The cycle queue is empty!\n"); break;}
scanf("%d",&x);
}
list(cq);
}
/*初始化队列*/
void initqueue(cqueue *cq)
{
cq->base=(int *)malloc(MAXSIZE*sizeof(int));
cq->front=cq->rear=0;
}
/*入队操作*/
int enqueue(cqueue *cq,int e)
{
if((cq->rear+1)%MAXSIZE==cq->front) return 0;
cq->base[cq->rear]=e;
cq->rear=(cq->rear+1)%MAXSIZE;
return 1;
}
/*出对操作*/
int outqueue(cqueue *cq,int *e)
{
if(cq->front==cq->rear) return 0;
*e=cq->base[cq->front];
cq->front=(cq->front+1)%MAXSIZE;
return 1;
}
/*输出操作*/
void list(cqueue *cq)
{
int i;
i=cq->front;
while(i!=cq->rear)
{
printf("%4d",cq->base[i]);
i=(i+1)%MAXSIZE;
}
printf("\n");
}
main()
{
fun();
getch();
}
我输入0的时候它就不停的打印一大堆不知道什么东西的了。
对头元素出队列;当ai=0时算法结束。利用循环队列完成*/
#include<stdio.h>
#define MAXSIZE 5
typedef struct
{
int *base;
int front;
int rear;
}cqueue;
/*函数声明*/
void fun(void);
int enqueue();
int outqueue();
void initqueue();
void list();
/*算法*/
void fun(void)
{
cqueue cq;
int x;
int i;
scanf("%d",&x);
while(x!=0)
{
if(x>0)
{
if(!enqueue(&cq,x))
{ printf("The cycle queue is full!\n"); break;}
}
else if(!outqueue(&cq,&x))
{ printf("The cycle queue is empty!\n"); break;}
scanf("%d",&x);
}
list(cq);
}
/*初始化队列*/
void initqueue(cqueue *cq)
{
cq->base=(int *)malloc(MAXSIZE*sizeof(int));
cq->front=cq->rear=0;
}
/*入队操作*/
int enqueue(cqueue *cq,int e)
{
if((cq->rear+1)%MAXSIZE==cq->front) return 0;
cq->base[cq->rear]=e;
cq->rear=(cq->rear+1)%MAXSIZE;
return 1;
}
/*出对操作*/
int outqueue(cqueue *cq,int *e)
{
if(cq->front==cq->rear) return 0;
*e=cq->base[cq->front];
cq->front=(cq->front+1)%MAXSIZE;
return 1;
}
/*输出操作*/
void list(cqueue *cq)
{
int i;
i=cq->front;
while(i!=cq->rear)
{
printf("%4d",cq->base[i]);
i=(i+1)%MAXSIZE;
}
printf("\n");
}
main()
{
fun();
getch();
}
我输入0的时候它就不停的打印一大堆不知道什么东西的了。