数组实现循环队列(一)
2015-10-14 21:09
459 查看
</pre><pre name="code" class="cpp"># include<cstdio> # include<cstdlib> # define maxsize 6 using namespace std; typedef int Elementype; typedef struct node{ int date[maxsize]; int front; int rear; }Queue; bool Init(Queue *q){ q->front=q->rear=0; return true; } bool IsEmpty(Queue *q){ if(q->rear == q->front) return true; else return false; } bool IsFull(Queue *q){ if((q->rear + 1) % maxsize == q->front) return true; else return false; } bool PushQueue(Queue *q,Elementype x){ if(IsFull(q)) return false; else { q->date[q->rear] = x; q->rear = (q->rear + 1) % maxsize; return true; } } bool OutQueue(Queue *q,Elementype *x){ if(IsEmpty(q)) return false; else { *x = q->date[q->front]; q->front=(q->front + 1) % maxsize; return true; } } int number(Queue *q){ return((q->rear - q->front + maxsize) % maxsize); } int main(){ int i; Queue q; Init(&q); Elementype x; for(i=1;i<=5;i++){ if(PushQueue(&q,i)) printf("进队列成功 : %d\n",i); else printf("进队列失败\n"); } printf("队列中元素的个数 :%d\n",number(&q)); printf("队列是否为空 :%d\n",IsEmpty(&q)); printf("队列是否满 :%d\n",IsFull(&q)); printf("-------------------------\n\n"); printf("出队列元素依次 :"); for(i=0;i<5;i++){ OutQueue(&q,&x); printf("%d ",x); } printf("\n"); printf("队列是否为空 :%d\n",IsEmpty(&q)); printf("队列是否满 :%d\n",IsFull(&q)); printf("--------------------------\n"); printf("所以可见先入队的先出队\n"); printf("注意队满、队空、队列中元素的个数的判断条件\n"); return 0; }
相关文章推荐
- 游戏流水数据存储
- PostgreSQL aggregate function 1 : General-Purpose Aggregate Functions
- hihoCoder 1239 Fibonacci
- 五种常用的图片格式及其是否有数据压缩的总结
- Ehcache与redis
- 新建Oracle用户并且给予权限
- 按需加载图片、js
- 【转】web服务器apache架构与原理
- 最长回文串
- 使用matlab进行多项式的拟合
- 嵌入式工程师知识点(一)
- POJ 1861 Network(KUS算法)
- 看看Spring的源码(一)——Bean加载过程
- chrome控制台模拟hover、focus、active等状态,方便调试
- UWP学习目录整理
- iOS 中block结构的简单用法
- 安装TortoiseSVN出错
- 在PostgreSQL中用线性回归分析linear regression做预测 - 例子2, 预测未来数日某股收盘价
- Socket 与 WebSocket
- 测试代码的编写