1、什么是队列?队列有什么特性?
只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表。队列具有先进先出FIFO(First in First Out)。
入队列:进行插入操作的一端称为队尾。
出队列:进行删除操作的一端称为队头。
2、栈和队列有什么区别?
- 队列先进先出,例如排队。栈后进先出。
- 对插入和删除操作的“限定”不同。栈只能在一端进行数据的插入和删除。而队列是在一端进行插入,另一端进行删除操作。
- 栈只能从头部读取数据,也就是说想要得到最后放入的数据需要遍历整个栈才能取出来,而且遍历数据的时候还得为数据开辟临时空间。队列是基于地址指针进行遍历,可以从头部或尾部开始遍历,但不能同时开始遍历,过程中不用开辟临时空间,速度较快。
3、队列的实现
队列可以以链表和数组的结构实现,使用链表的结构更具有优势,因为使用数组的结构,在出队列的时候效率太低了。
队列结构:
typedef int QDataType;
typedef struct QNode
{
struct QNode* _pNext;
QDataType _data;
}QNode;
typedef struct Queue
{
QNode* _front;
QNode* _back;
}Queue;