一个循环队列的调用出错
程序代码:
#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; } 真心不知道怎么回事,应该是出队与入队两个调用函数的问题。 万分感谢。