1.什么是队列?
队列(queue)也是一种访问受限的线性数据结构。它只允许从队列尾(rear)插入结点,称为入队列;只允许从队列头(font)取出结点,称为出队列,如下图所示。因此,先进入队列的结点先出来,这就是所谓的“先进先出“(FIFO, First In, First Out)”
日常生活中,在食堂打饭排队、在银行排队办业务,都是队列的例子。在计算机里,操作系统为每个应用程序维护一个消息队列,应用程序接收到的消息存放在队列中,应用程序根据先来先处理的方式处理每个消息,这也是队列的应用
2.队列有什么用?
队列的特点是:结点出队列的顺序一定就是入队列的顺序。如果要记录待处理数据的顺序,并严格按先后顺序来处理这些数据,就可能需要用到队列了
队列最经典的应用当属广度优先搜索(BFS),在BFS算法里,需要用队列来存储正在访问的这一层和待访问的下一层的顶点,以便扩展出新的顶点
3.STL中的队列
要使用STL中的队列,必须包含头文件<queue>,并使用std命名空间
定义队列的方法:
queue<char> Q1; //队列中的结点为字符型数据
queue<int> Q2; //队列中的结点为整型数据
queue<pos> Q3; //队列中的结点为pos变量(自定义数据类型)
queue常用的成员函数有:
①push:入队列,参数为需要入队列的结点
②pop:出队列,返回值为空
③front:取得队列头结点,返回值为队列头结点,该操作并不会使得队列头结点出队列
④empty:判断队列是否为空,返回值为bool型
⑤size:计算队列中结点的个数