一、概述
队列是一种操作受限的线性表,对于它的所有插入都在表的一端进行,所有的删除(以至几乎所有存取)都在表的另一端进行,且这些操作又都是按照先进先出(FIFO)的原则进行的。进行删除的一端称为队头(front),进行插入的一端称为队尾(rear)。没有元素的队列称为空队列(简称空队)。
用链接存储方式实现的队列称为链式队列。队列的主要操作都在队首和队尾进行,所以链式队列应包含两个指针:队首指针front和队尾执政rear,分别存放队首和队尾结点的地址信息。
如果想要去跑下面代码的部分实现,请先加上头文件、结构体声明、全局变量变量声明、函数声明,这里也附带了一个测试用的主函数,如果只是跑单独的几个函数操作,请将主函数浅浅修改,如果跑所有的操作,请按顺序将所有代码复制下来放在同一源文件里面。
#include<stdio.h>
#include<stdlib.h>
// 结构体所需的内存空间
#define LEN sizeof(Node)
// 输入错误时的返回值
#define ERROR_INPUT -1
// 定义单链表的结构体,存放数据域和指针域
typedef struct Node
{
int data;
struct Node* next;
}Node, * pNode;
// 结点的总数
int MaxQSize;
// 队列头指针和尾指针
pNode front;
pNode rear;
void QCreate();
int QDelete();
int QInsert(int x);
int QFront();
void QPrint(