操作介绍
1、入队一个元素
2、出队一个元素
3、输出当前队列
4、获取队首元素
5、求队列长度
6、判断队列是否为空
7、判断队列是否为满
8、退出操作系统
#include<windows.h>
#include<iostream>
using namespace std;
typedef struct
{
int front = 0;
int rear = 0;
}QPtr;
typedef int Queue[100];
//输出循环队列
void putQueue(Queue Q, QPtr q, int n)
{
cout << "当前队列为:";
if (q.front == q.rear)cout << "队列为空";
while (q.front != q.rear)
{
cout << Q[q.front] << " ";
q.front = (q.front + 1) % (n + 1);
}
cout << endl;
}
//入队一个元素
int EnQueue(Queue Q, QPtr q, int n)
{
if ((q.rear + 1) % (n + 1) == q.front)cout << "队满无法入队!";
else
{
int x;
cout << "请输入入队元素:";
cin >> x;
Q[q.rear] = x;
q.rear = (q.rear + 1) % (n + 1);
}
return q.rear;
}
//出队一个元素
int DeQueue(Queue Q, QPtr q, int n)
{
if (q.front == q.rear)cout << "队空无法完成出队操作";
else
{
q.front = (q.front + 1) % (n + 1);
}
return q.front;
}
//获取队首元素
void GetfirstQueue(Queue Q, QPtr q)
{
if (q.front == q.rear)cout << "队空无法完成出队操作";
else
{
cout << "队首元素为:";
cout << Q[q.front];
}
cout << endl;
}
//求队列长度
void GetlengthQueue(Queue Q, QPtr q, int n)
{
int flag = 1, p;
p = q.front;
if (q.front == q.rear)flag = 0;
else
{
while (p != q.rear - 1)
{
p = (p + 1) % n;
flag++;
}
}
cout << "当前队列长度为:" << flag << endl;
}
//判断队列是否为空
void judgeQueueempty(Queue Q, QPtr q)
{
if (q.front == q.rear)cout << "队列为空" << endl;
else cout << "队列不为空" << endl;
}
//判断队列是否为满
void judgeQueuefull(Queue Q, QPtr q, int n)
{
if (q.rear % n == q.front)cout << "队列为满" << endl;
else cout << "队列不为满" << endl;
}
int main()
{
QPtr q;
Queue Q;
int n;
cout << "请输入元素个数:";
cin >> n;
if (n == 0)cout << endl;
else
{
cout << "请设置队列元素:";
for (int i = 0; i < n; i++, q.rear++)
{
cin >> Q[q.rear];
}
}
while (1)
{
Sleep(1000);
cout << "*********操作介绍**********" << endl;
cout << " 1、入队一个元素 " << endl;
cout << " 2、出队一个元素 " << endl;
cout << " 3、输出当前队列 " << endl;
cout << " 4、获取队首元素 " << endl;
cout << " 5、求队列长度 " << endl;
cout << " 6、判断队列是否为空 " << endl;
cout << " 7、判断队列是否为满 " << endl;
cout << " 8、退出操作系统 " << endl;
cout << "**************************" << endl;
cout << "请输入操作代号:";
int m;
cin >> m;
switch (m)
{
case 1:
q.rear = EnQueue(Q, q, n);
break;
case 2:
q.front = DeQueue(Q, q, n);
break;
case 3:
putQueue(Q, q, n);
break;
case 4:
GetfirstQueue(Q, q);
break;
case 5:
GetlengthQueue(Q, q, n);
break;
case 6:
judgeQueueempty(Q, q);
break;
case 7:
judgeQueuefull(Q, q, n);
break;
}
if (m == 8)break;
}
while(1);
return 0;
}