循环队列的实现
程序员文章站
2022-03-08 09:20:28
...
语言:C++
#include <iostream>
using namespace std;
#define MAXQSIZE 100
typedef struct
{
int *base;
int front;
int rear;
}SqQueue;
//初始化
void InitQueue(SqQueue &Q)
{
//构造一个空队列Q
Q.base=new int[MAXQSIZE];
if(!Q.base)cout<<"存储失败!"<<endl;
Q.front=Q.rear=0;
}
//求队列长度
int QueueLength(SqQueue Q)
{
//返回Q的元素个数,即队列长度
return (Q.rear-Q.front+MAXQSIZE)%MAXQSIZE;
}
//入队
void EnQueue(SqQueue &Q,int e)
{
//插入元素e为Q的新的队尾元素
if((Q.rear+1)%MAXQSIZE==Q.front)
cout<<"队已满,插入失败!"<<endl;
Q.base[Q.rear]=e;
Q.rear=(Q.rear+1)%MAXQSIZE;
}
//出队
int DeQueue(SqQueue &Q,int &e)
{
//删除Q的队尾元素,用e返回其值
if(Q.front==Q.rear) cout<<"队为空,返回失败!"<<endl;
e=Q.base[Q.front];
Q.front=(Q.front+1)%MAXQSIZE;
return e;
}
//输出队
void display(SqQueue &Q)
{
cout<<"[";
while(Q.front!=Q.rear)
{
if(Q.front+1==Q.rear)
{
cout<<Q.base[Q.front];
}
else
{
cout<<Q.base[Q.front]<<"<";
}
Q.front=(Q.front+1)%MAXQSIZE;
}
cout<<"]"<<endl;
}
int main()
{
SqQueue Q;int x;int e;int i;
cout<<"欢迎使用循环队列!功能如下:"<<endl;
cout<<"--------------------------"<<endl;
cout<<"[1].初始化 [2].入队"<<endl;
cout<<"[3].出队 [4].取队长"<<endl;
cout<<"[5].输出队 [0].退出"<<endl;
cout<<"--------------------------"<<endl;
cout<<"请输入:";cin>>x;
while(x)
{
switch(x)
{
case 1:InitQueue(Q);break;
case 2:cout<<"请输入要入队的元素:";cin>>e;EnQueue(Q,e);break;
case 3:i=DeQueue(Q,e);cout<<"出队元素为:"<<i<<endl;break;
case 4:i=QueueLength(Q);cout<<"当前队长为:"<<i<<endl;break;
case 5:cout<<"当前队列为(队头在前):"<<endl;display(Q);break;
case 0:break;
default:cout<<"您的选择错误,请重新输入!"<<endl;
}
cout<<"请选择您需要的功能:";cin>>x;
}
return 0;
}
上一篇: css怎么设置字体加粗样式
下一篇: flink source和sink