栈与队列——关于队列1
程序员文章站
2022-05-04 15:14:22
...
一.队列的定义
队列是只允许在一端进行插入操作,在另一端进行删除操作的线性表。允许插入(也称入队,进队)的一段称为队尾,允许删除(也称出队)的一段称为队头。
队列除了具有线性关系外,还具有先进先出的特性。
二.队列的结构
队列在生活里有很多应用场景,如对顾客服务的部门(如银行)的工作处理往往是按队列方式进行的。
常见的对队列的操作:
1.初始化队列
2.销毁队列
3.将元素入队
4.得到队头元素
5.将元素出队。
6.判断队列是否为空
三.队列顺序存储结构及实现
代码如下:
#include<iostream>
using namespace std;
const int QueueSize=20;
template<class T>
class Queue
{
T data[QueueSize]; //用一个数组存储队列中数据
int front,rear; //队头队尾的两个指针
public:
Queue(){front=rear=QueueSize-1;} //初始化队列
~Queue(){} //默认析构函数
void EnQueue(T x); //入队
T DeQueue(); //删除数据
T GetQueue(); //得到队头数据
int Empty()
{
if(front==rear)
cout<<"队列为空"<<endl;
else if((rear+1)%QueueSize==front)
cout<<"队列已满!"<<endl;
else
cout<<"队列未满。"<<endl;
}
};
template<class T>
void Queue<T>::EnQueue(T x)
{
if((rear+1)%QueueSize==front) throw"shangyi";
rear=(rear+1)%QueueSize;
data[rear]=x;
}
template<class T>
T Queue<T>::DeQueue()
{
if(rear==front) throw "xiayi";
front=(front+1)%QueueSize;
cout<<"将元素: "<<data[front]<<" 出队"<<endl;
return data[front];
}
template<class T>
T Queue<T>::GetQueue()
{
if(rear==front) throw "xiayi";
int i=(front+1)%QueueSize;
cout<<"队头元素为"<<data[i]<<endl;
return data[i];
}
int main()
{
Queue<int>q;
int n,x;
cout<<"请输入要入队的元素个数:"<<endl;
cin>>n;
for(int i=0;i<n;i++)
{
cout<<"请输入第"<<i+1<<"个元素"<<endl;
cin>>x;
q.EnQueue(x);
}
q.Empty();
q.GetQueue();
for(int i=0;i<n;i++)
{
q.DeQueue();
}
q.Empty();
return 0;
}
运行截图:
原创。 未经允许请勿转载。