栈与队列——关于队列1

一.队列的定义

队列是只允许在一端进行插入操作,在另一端进行删除操作的线性表。允许插入(也称入队,进队)的一段称为队尾,允许删除(也称出队)的一段称为队头。

队列除了具有线性关系外,还具有先进先出的特性。

二.队列的结构

队列在生活里有很多应用场景,如对顾客服务的部门(如银行)的工作处理往往是按队列方式进行的。

常见的对队列的操作:

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;
}

运行截图:


原创。  未经允许请勿转载。

猜你喜欢

转载自blog.csdn.net/lyf3010572059/article/details/80927436