队列
是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。
队列的数据元素又称为队列元素。在队列中插入一个队列元素称为入队,从队列中删除一个队列元素称为出队。因为队列只允许在一端插入,在另一端删除,所以只有最早进入队列的元素才能最先从队列中删除,故队列又称为先进先出(FIFO—first in first out)
c++队列queue模板类的定义在<queue>头文件中,queue 模板类需要两个模板参数,一个是元素类型,一个容器类型,元素类型是必要的,容器类型是可选的,默认为deque 类型。
C++队列Queue类成员函数有:
- back() 返回最后一个元素
- empty() 如果队列空则返回真
- front() 返回第一个元素
- pop() 删除第一个元素
- push() 在末尾加入一个元素
- size() 返回队列中元素的个数
例如0-5,共5个元素,我们对其进行入队出队操作:
#include<queue>
#include<cstdio>
#include<iostream>
using namespace std;
int main()
{
queue <int> Q;
for(int i =0; i<5 ; i++)
{
Q.push(i);//入队
}
for(int i=0; !myQ.empty(); i++)
{
printf("队列剩余元素个数为:%d\n\n",Q.size());
printf("队列的第一个元素为:%d 队列最后一个元素为:%d\n\n",Q.front(),Q.back());
Q.pop();//出队
}
Q.push(8);//在队列的最后一位添加一个元素
printf("队列压入的元素为:%d\n",Q.back());
return 0;
}
优先队列
C++优先队列类似队列,但是在这个数据结构中的元素按照一定顺序排列。
成员函数有:
1.empty() 如果优先队列为空,则返回真
2.pop() 删除第一个元素
3.push() 加入一个元素
4.size() 返回优先队列中拥有的元素的个数
5.top() 返回优先队列中有最高优先级的元素
#include<cstdio>
#include<queue>
#include<iostream>
using namespace std;
int main()
{
priority_queue<int>Q;
for(int i=1;i<=5;i++)
{
int x;
scanf("%d",&x);//压入输入的元素
Q.push(x);
}
for(int i=1;i<=5;i++)
{
printf("优先队列中最大元素为:%d\n\n",Q.top());
Q.pop();
}
return 0;
}