循环队列
来源:互联网 发布:win10电脑动态桌面软件 编辑:程序博客网 时间:2024/06/05 18:26
循环队列的实现,本人语文表达能力有限,但写的代码简单易懂,这就不做更多的解释,直接看代码。
1:头文件:#include"DQueue.h"
#pragma once#include<stdio.h>#include<stdlib.h>#define ElemType int#define SizeFull 20typedef struct Queue{ElemType *data;int sizefull;int front;int rear;}Queue;void Show(); //显示菜单void InitQueue(Queue *Q);//初始化队列void DestoryQueue(Queue *Q);//摧毁队列void ClearQueue(Queue *Q);//清除队列bool IsFull(Queue *Q);//判空bool IsEmpty(Queue *Q);//判满int QueueLength(Queue *Q);//求队列长度void EnQueue(Queue *Q,ElemType x);//入队列void DeQueue(Queue *Q);//出队列void ShowQueue(Queue *Q);//显示队列
2:功能实现DQueue.cpp:
<pre name="code" class="cpp">#include"DQueue.h"void InitQueue(Queue *Q){Q->data=(ElemType*)malloc(sizeof(ElemType)*SizeFull);if(Q->data==NULL){printf("开辟内存失败\n");return;}Q->sizefull=SizeFull;Q->front=Q->rear=0;}void Show(){printf("************************************************\n");printf("*[1]: 入栈 [2]: 出栈 *\n");printf("*[3]: 栈长度 [4]: 摧毁栈 *\n");printf("*[5]: 清理栈 [6]: 显示栈 *\n");printf("*[0]: 退栈 *\n");printf("************************************************\n");printf("请选择:");}void DestoryQueue(Queue *Q){free(Q->data);Q->front=Q->rear=Q->sizefull=0;}void ClearQueue(Queue *Q){Q->front=0;Q->rear=0;}bool IsFull(Queue *Q){return (Q->rear+1)%Q->sizefull==Q->front;}bool IsEmpty(Queue *Q){return Q->rear%Q->sizefull==Q->front;}int QueueLength(Queue *Q){return Q->rear%Q->sizefull;}void EnQueue(Queue *Q,ElemType x){if(IsFull(Q)){printf("空间已满\n");return;}Q->data[Q->rear]=x;Q->rear=(Q->rear+1)%Q->sizefull;}void DeQueue(Queue *Q){if(IsEmpty(Q)){printf("队列为空,无法删除\n");return;}Q->front=(Q->front+1)%Q->sizefull;}void ShowQueue(Queue *Q){for(int i=Q->front;i!=Q->rear;i=(i+1)%Q->sizefull){printf("%d ",Q->data[i]);}printf("\n");}
3:主函数main.cpp
<pre name="code" class="cpp">#include"DQueue.h"void main(){Queue Q;InitQueue(&Q);ElemType x;int Length;int pos=1;while(pos){Show();scanf("%d",&pos);switch(pos){case 1:printf("请输入数据,以-1结束:");while(scanf("%d",&x),x!=-1){EnQueue(&Q,x);}break;case 2:DeQueue(&Q);break;case 3:Length=QueueLength(&Q);printf("Length=%d\n",Length);break;case 4: DestoryQueue(&Q);break;case 5:ClearQueue(&Q);break;case 6:ShowQueue(&Q);break;default :break;}}}
0 1
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- HDU ACM 4255 A Famous Grid
- 黑马程序员——Java练习笔记——数组
- 厦门大学线下编程比赛第一题:求和
- 尺度不变的模板匹配方法(opencv源码)
- Thinkphp下的RBAC权限管理完结——2015/5/12
- 循环队列
- shell十三问
- [cocos2dx]cocos2dx-lua中class语法
- 黑马程序员——c语言基础:scanf函数
- python - 动态加载模块和类
- CSU 1612: Destroy Tunnels 强连通分量 Kosaraju算法
- imageNamed 与 imageWithContentsOfFile的区别
- python–ntohll和htonll的实现(转载)
- Cocos2d-x 3.6 vs2012 更新设置