首先要明白,队列遵循“队头出,队尾进”的原则
基本操作有:
1、初始化链队
2、创建链队
3、向链队里插入一个元素
4、删除链队的元素
5、获取队头元素
6、打印这个链队
Status InitQueue(LinkQueue& Q)//初始化
{
Q.front = Q.rear = new QNode;//创建一个节点,Q.front和Q.rear都是指向一个节点,像定义的节点那种构造类型
Q.front->next = NULL;//队头节点之后就没有了,即为一个空队列
return OK;
}
Status CreatQueue(LinkQueue& Q, int i)//创建一个链队
{
Q.front = Q.rear = new QNode;//创建一个节点,Q.front和Q.rear都是一个节点,像定义的节点那种构造类型
Q.front->next = NULL;//队头节点之后就没有了,即为一个空队列
QNode* p;
int m, n;//n为输入元素的值,m用于循环
for (int m = 0; m < i; m++)
{
p = new QNode;//初始化p节点。p是一个新的节点,用来存放输入的值。
scanf_s("%d", &n);
p->data = n;
p->next = NULL;
Q.rear->next = p;//在结尾插入新元素,遵守了队尾进的原则
Q.rear = p;
}
return OK;
}
Status EnQueue(LinkQueue& Q, QElemType e)//将e入队
{
QNode* p;
p = new QNode;//对