数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。
前言
队列是线性表(线性存储结构)中比较特殊的一种,它的特点总结下来就四个字“先进先出”。本文介绍队列以及循环队列
1. 队列介绍
1.1 什么是队列
队列(queue)是一种遵循”先进先出“的存储方式。
如同这个示意图,数据从head开始依次进入队列(入队),取出数据时同样从head开始 依次离开队列(出队)。就像在高铁检票口前排起的一条队伍,先到的人排在前面,后来的人排在队伍的后面(进入队伍不考虑插队),开始检票的时候也是从前往后依次检票(离开队伍)。
队列只是一种对一组数据的处理方式,对于数据的存储既可以采用顺序表的方式也可以采用链表的方式。
本文采用顺序表的方式存储队列中的数据
1.2 队列的性质
-
新元素插入到队列的末尾
-
队首元素先离开队列
1.3 队列的构成
- 队首位置
- 队尾位置
- 队列的容量
- 数据的存储空间
1.4 队列的框架代码(C++版)
#include <iostream>
#include<iostream>
using namespace std;
//
template <typename Type> class Queue {
private:
Type *data;
int head, tail, length;
public:
Queue(int new_length); // 构造函数,初始化队列
~Queue(); // 析构函数,回收队列的内存空间
bool push(Type val); // 入队操作
void output(); // 输出队列中的元素
void pop(); // 出队操作
};
下述的所有代码都是基于这个框架
2. 队列的操作
2.1 初始化队列
2.1.1 步骤
- 根据队列的长度为数据申请存储空间
- 队伍中没有元素将队首置为0
- 将队尾置为-1(当有入队操作时使队尾加1)
2.1.2 代码展示