循环队列
来源:互联网 发布:云南大学 知乎 编辑:程序博客网 时间:2024/05/21 12:49
#include<iostream>#include<cstdio>#include<stdlib.h>#include<malloc.h>#define MAXSIZE 100#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2using namespace std;typedef int ElemType;typedef int Status;typedef struct{ ElemType* base; int front; int rear;}SQueue;Status EmptyQueue(SQueue&q){ if(q.front==q.rear)return OK; return ERROR;}Status InitQueue(SQueue& q){ q.base=(ElemType*)malloc(sizeof(ElemType)*MAXSIZE); if(!q.base)exit(ERROR); q.front=q.rear=0;}Status EnQueue(SQueue& q,ElemType e){ if((q.rear+1)%MAXSIZE==q.front)return ERROR; q.base[q.rear]=e; q.rear=(q.rear+1)%MAXSIZE; return OK;}Status Dequeue(SQueue& q,ElemType&e){ if(EmptyQueue(q)){ return ERROR; } e=q.base[q.front]; q.front=(q.front+1)%MAXSIZE; return OK;}int getSqeueLength(SQueue q){ return (q.rear-q.front+MAXSIZE)%MAXSIZE; //当rear>front时,rear-front //当rear<front时,为(0+rear) +MAXSIZE-front //故综合起来为返回的表达式的值 }int main(){ SQueue sq; InitQueue(sq); for(int i=0;i<10;i++){ EnQueue(sq,i); } int t; cout<<"length1: "<<getSqeueLength(sq)<<endl; while(!EmptyQueue(sq)){ Dequeue(sq,t); cout<<t<<" "; } cout<<"length2: "<<getSqeueLength(sq)<<endl;}
阅读全文
0 0
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- Linux实现的IEEE 802.1Q及VLAN/Trunk以及三层交换
- iOS开发 UIReferenceLibraryViewController(词典)的使用
- winForm圆角矩形及C++builderForm圆角设计
- java 集合类深入理解
- 2017多校四 1007题 hdu 6073 Matching In Multiplication 拓扑排序 + 找环
- 循环队列
- Java8 默认方法 default method
- 残缺的棋盘(dijkstra算法)
- 理解面向对象
- 多目标及多分类区别及交叉熵问题
- 文章标题
- android开机
- rk3288 gpio控制
- 编译运行eclispe下的项目,weblogic启动报错:系统找不到指定文件