1.什么是队列
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。
2.队列有什么特性?
先进先出,如同现实中的排队
3.栈和队列有什么区别?
1.删除数据元素的位置不同,栈的删除操作在表尾进行,队列的删除操作在表头进行。
2.应用场景不同;常见栈的应用场景包括括号问题的求解,表达式的转换和求值,函数调用和递归实现,深度优先搜索遍历等;常见的队列的应用场景包括计算机系统中各种资源的管理,消息缓冲器的管理和广度优先搜索遍历等。
3.顺序栈能够实现多栈空间共享,而顺序队列不能。
//头文件
#pragma once
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <assert.h>
typedef int QDataType;
typedef struct QNode
{
struct QNode* _pNext;
QDataType _data;
}QNode;
typedef struct Queue
{
QNode* _front; // 指向队头元素
QNode* _back; // 指向队尾元素
int Q_size;//队列的有效元素
}Queue;
//队列的初始化
void QueueInit(Queue* q);
//入队列
void QueuePush(Queue* q, QDataType data);
//出队列
void QueuePop(Queue* q);
//返回对头元素
QDataType QueueFront(Queue* q);
//返回队尾元素
QDataType QueueBack(Queue* q);
//返回队列有效元素个数
int QueueSize(Queue* q);
//判断队列是否为空
int QueueEmpty(Queue* q);
//销毁队列
void