一个循环队列的调用出错
程序代码:#include
#include
typedef struct {
int *base;
int front;
int rear;
}sqqueue;
int En_que(int borrow, sqqueue Q)
{
printf("%d",borrow);//
if(!Q.base){
printf("内存已满!\n");
}
if((Q.rear+1)%6==Q.front){
Q.rear=0;
Q.base[Q.rear]=borrow;
Q.rear++;
printf("%d",Q.base[Q.rear]);//
}
else{
Q.base[Q.rear]=borrow;
Q.rear++;
printf("%d",Q.base[Q.rear]);//
}
return 0;
}
int De_que(sqqueue Q){
int n;
if(!Q.base){
printf("你还没有去过银行\n");
n=0;}
if((Q.front+1)%6==Q.front){
n=Q.base[Q.front];
Q.front=0; }
else if(Q.front==Q.rear)
n=0;
else
{n=Q.base[Q.front];
Q.front++;}
return n;
}
int main(){
int i,n;
int borrow;
sqqueue Q;
Q.base=(int*)malloc(6*sizeof(int));
Q.rear=Q.front=0;
while(1){
printf("你的选择是:");
scanf("%d",&i);
if(i==1){
scanf("%d",&borrow);
En_que(borrow,Q);
}
else if(i==2){
for(i=1;1<=5;i++){
n=De_que(Q);
if(n<0)
printf("你向银行还款%d元",n);
else if(n>0)
printf("你向银行贷款%d元",n);
}
}
}
return 0;
}
真心不知道怎么回事,应该是出队与入队两个调用函数的问题。
万分感谢。









