循环队列的顺序存储结构及其操作
2014-02-09 17:51
417 查看
#include "stdafx.h" #include <iostream> #include <exception> using namespace std; //循环队列的顺序存储结构 typedef int QElemType; typedef int Status; const int ok = 1; const int error = 0; const int maxSize = 5; typedef struct { QElemType data[maxSize]; int front; int rear; }SqQueue,*pSqQueue; //初始化队列 Status InitQueue(SqQueue *Q) { Q->front = 0; Q->rear = 0; for(int i = 0;i!=maxSize;++i) Q->data[i]=0; return ok; } //获取队列长度 int QueueLenght(const SqQueue *Q) { return (maxSize-Q->front+Q->rear)%maxSize; } //入队操作,如果队列未满,则插入元素e为Q新的队尾元素 Status EnQueue(SqQueue *Q,const int &e) { if((Q->rear+1)%maxSize==Q->front) { cout<<"队列已满,入队失败!"<<endl; return error; } Q->data[Q->rear]=e; Q->rear=(Q->rear+1)%maxSize; return ok; } Status DeQueue(SqQueue *Q) { if(Q->rear==Q->front) return error; cout<<"出队列:"<<Q->data[Q->front]<<endl;; Q->front=(Q->front+1)%maxSize; return ok; } void outputQueue(const SqQueue *Q) { if(Q->rear == Q->front) { cout<<"队列空了!"<<endl; return ; } if(Q->rear>Q->front) { for(int i = Q->front ;i != Q->rear;i++) cout<<Q->data[i]<<" "; } else { for(int i = Q->front;i!=maxSize;++i) { cout<<Q->data[i]<<" "; } for(int j = 0;j!=Q->rear;++j) { cout<<Q->data[j]<<" "; } } } int _tmain(int argc, _TCHAR* argv[]) { SqQueue *qQueue = new SqQueue; InitQueue(qQueue); EnQueue(qQueue,1); EnQueue(qQueue,2); EnQueue(qQueue,3); EnQueue(qQueue,4); DeQueue(qQueue); DeQueue(qQueue); DeQueue(qQueue); DeQueue(qQueue); EnQueue(qQueue,5); DeQueue(qQueue); cout<<"队列长度为:"<<QueueLenght(qQueue)<<endl; outputQueue(qQueue); return 0 ; }
相关文章推荐
- 循环队列和链式队列的结构及其基本操作(入队、出队、取队头、查看对内元素)
- 实验4:栈和队列的基本操作实现及其应用——循环队列
- 队列——顺序存储结构及其基本运算(循环队列)
- 队列——顺序存储结构及其基本运算(循环队列的另一种表达方式)
- 循环队列的结构及其操作
- 【数据结构】——顺序循环队列的相关操作
- 大话数据结构八:队列的顺序存储结构(循环队列)
- 设数组data[m]作为循环队列的存储空间。front为队头指针,rear为队尾指针,则执行出队操作后其头指针front值为()
- 循环队列基本操作的实现(Java)
- 循环队列操作
- 队列-循环队列及其实现
- 循环队列的相关操作(顺序结构)
- 队列的顺序存储结构及其基本运算的实现
- 基于两端操作的循环队列的实现
- 栈与队列及其基本操作(java版)
- 【十二】队列及其顺序存储结构
- 消息队列及其操作_读书笔记_8
- 循环队列的定义、入队、出队等操作 C++代码实现
- 队列的顺序存储结构及其基本运算的实现
- 循环队列的基本操作