| 查看: 231 | 回复: 0 | ||
1直在路上铁虫 (小有名气)
|
[求助]
出栈哪里出错了呢?最后两个函数 empty 和out_queue ,VC6.0显示出栈失败。。。。
|
|
# include <stdio.h> # include <malloc.h> # include <stdlib.h> typedef struct Queue { int*pBase; int front; int rear; }QUEUE; void init(QUEUE *pQ,int len); void en_queue(QUEUE *pQ,int num,int len); bool full_queue(QUEUE *pQ,int len); void traverse(QUEUE *pQ,int len); bool out_queue(QUEUE*pQ,int*pVal,int len); bool is_empty(QUEUE*pQ); int main (void) { QUEUE Q; int len; int i; int num; int val; printf("请输入队列长度:len = " ;scanf("%d",&len); init(&Q,len); for(i = 0; i < len-1; ++i )//入队循环 { printf("请输入第%d个要入队的元素:",i+1); scanf("%d",&num); en_queue(&Q,num,len);// 入队函数调用,想想 len 的作用 } traverse(&Q,len);// 入队后遍历 printf("\n" ;if(out_queue(&Q,&val,len)) { printf("出队成功!且出队的元素是:%d\n",val); } else { printf("出队失败!\n" ;} return 0; } void init(QUEUE *pQ,int len) { pQ->pBase = (int*)malloc(sizeof(int)*len); if (NULL == pQ->pBase) { printf("动态内存分配失败!\n" ;exit(-1); } else { pQ->front = 0; pQ->rear = 0; } return; } void en_queue(QUEUE *pQ,int num,int len) { if(full_queue(pQ,len)) { printf("队列已满!" ;} else { pQ->pBase[pQ->rear] = num; pQ->rear = (pQ->rear +1) % len; } return; } bool full_queue(QUEUE *pQ,int len) { if((pQ->rear +1)%len == pQ->front) return true; else return false; } void traverse(QUEUE *pQ,int len) { int cnt = 0; while(pQ->front != pQ->rear) { printf("%d\n",pQ->pBase[pQ->front]); pQ->front = (pQ->front +1) % len; cnt++; } printf("长度为%d的队列中实际元素的个数为:%d \n",len,cnt); return; } bool out_queue(QUEUE * pQ,int *pVal,int len) { if(is_empty(pQ)) return false; else { *pVal = pQ->pBase[pQ->front]; pQ->front = (pQ->front + 1) % len; return true; } } bool is_empty(QUEUE *pQ) { if(pQ->front == pQ->rear) return true; else return false; } |
» 猜你喜欢
存款400万可以在学校里躺平吗
已经有26人回复
拟解决的关键科学问题还要不要写
已经有8人回复
最失望的一年
已经有7人回复
推荐一本书
已经有16人回复
国自然申请面上模板最新2026版出了吗?
已经有20人回复
26申博
已经有3人回复
请教限项目规定
已经有3人回复
基金委咋了?2026年的指南还没有出来?
已经有10人回复
基金申报
已经有6人回复
疑惑?
已经有5人回复













;
回复此楼