欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

栈与队列——关于队列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;
}

运行截图:

栈与队列——关于队列1

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

相关标签: c++ 队列

上一篇: 1 并发队列

下一篇: 悲观锁