您的位置:首页 > 编程语言 > C语言/C++

c++实现顺序循环队列结构,简易队列

2017-05-16 00:00 831 查看
实验项目4:队列的入队与出队。

1、实验目的

(1)了解普通顺序队的基本运算。

(2)掌握循环队列的入队及出队算法。

2、实验内容

利用循环队列的内容,实现队列的EnQueue与DeQueue算法。

#include <iostream>

using namespace std;
#define MAX_SIZE 100
typedef int QElemType;
typedef int Status;
typedef struct {
QElemType *base;
int front;
int rear;
}SqQueue;
/**
* Initialization of queues
*/
Status InitQueue(SqQueue &Q){
Q.base = new QElemType[MAX_SIZE];
if(!Q.base){
cout<<"分配数组失败";
return -1;
}
Q.front = Q.rear = 0;
return 1;
}
/**
* Enter queues
*/
Status EnQueue(SqQueue &Q,QElemType e){
if((Q.rear+1)%MAX_SIZE==Q.front){cout<<"queue full!"<<endl;return -1;}
Q.base[Q.rear] = e;
Q.rear = (Q.rear+1)%MAX_SIZE;
return 1;
}
/**
* return queues length
*/
int QueueLnegth(SqQueue Q){
return (Q.rear-Q.front+MAX_SIZE)%MAX_SIZE;
}
/**
* Quit queues
*/
Status DeQueue(SqQueue &Q,QElemType &e){
if((Q.front==Q.rear)){return -1;}
e = Q.base[Q.front];
Q.front = (Q.front+1)%MAX_SIZE;
return 1;
}

void displayQueue(SqQueue &Q){
for(int i=Q.front;i<Q.rear-Q.front;i++){
cout<<Q.base[i]<<endl;
}
}

int main()
{
SqQueue Q1;
InitQueue(Q1);
int a;
for(int i=0;i<10;i++)
EnQueue(Q1,i+1);
DeQueue(Q1,a);
displayQueue(Q1);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据结构 队列 c++