C语言实现队列
1.队列的结构及相关概念
队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出 FIFO(First In First Out)的特性。
入队列:进行插入操作的一端称为队尾
出队列:进行删除操作的一端称为队头
2.队列的实现:
队列也可以数组和链表的结构实现,使用链表的结构实现更优一些,因为如果使用数组的结构,出队列在数 组头上出数据,效率会比较低。下面,我们描述如何使用链表实现队列。
QueueNode.h文件:
typedef int DataType;
typedef struct QueueNode
{
struct QueueNode* _next;
DataType _data;
}QueueNode;
typedef struct Queue
{
QueueNode* _front;//队头
QueueNode* _rear;//队尾
}Queue;
void QueueInit(Queue* p);//初始化队列
void QueueDestory(Queue* p);//销毁队列
void QueuePush(Queue* p,DataType x);//入队
void QueuePop(Queue* p);//出队
DataType QueueFront(Queue* p);//获取队首元素
DataType QueueBack(Queue* p);//获取队尾元素
int QueueEmpty(Queue* p);//判断队列是否为空
int QueueSize(Queue* p);//队列的大小
void Queueprint(Queue* p);//打印队列
void TestQueue();//测试
QueueNode.c文件:
//对队列进行初始化
void QueueInit(Queue* p)
{
assert(p);
p->_front = p->_rear = NULL;
}
//销毁队列
void QueueDestory(Queue* p)
{
assert(p);
QueueNode* cur = p->_front;