本关任务:用前面已经实现的线性表来实现一个整数队列(队列里的数据是整数)。共需要补全三个函数(也是队列的基本功能):判断队列空的 queueEmpty 函数、入列的 enQueue 函数和出列的 deQueue 函数。
完成 queueEmpty 、enQueue 和 deQueue 三个函数,以分别判断队列是否为空、入列和出列的要求。具体要求如下:函数 queueEmpty 判断队列 iq 是否为空,为空则返回 true,否则返回 false;函数 enQueue 实现将整数 num 入列到队列 iq。没有返回值,因为采用链表实现队列,只要还有内存,入列总会成功;函数 deQueue 实现从队列 iq 出列,如果队列非空,则返回出列的数据,否则返回−1。
#include "mqueue.h"
// 函数queueEmpty:判断队列iq是否为空
// 参数:iq-整数队列
// 返回值:true-队列iq为空,false-iq不为空
bool queueEmpty(intQueue iq)
{
return iq == NULL;
}
// 函数enQueue:将整数num入列到iq
// 参数:iq-整数队列,传引用,入列有可能改变队列头指针,num-入列的整数
// 返回值:无,只要还有内存,入列总会成功
void enQueue(intQueue &iq, int num)
{
node * new_node = new node;
new_node->data = num;
new_node->next = NULL;
// 查找队尾
if(iq == NULL)iq = new_node;
else// 队列非空
{
node * p = iq;
while(p->next)p=p->next;
p->next = new_node;
}
}
// 函数deQueue:出列
// 参数:iq-整数队列,传引用,出列有可能改变队列头指针
// 返回值:出列结点的数据,如果队列为空,返回-1
int deQueue(intQueue &iq)
{
if(queueEmpty(iq)) return -1;
// 此时队列一定有元素
node * copy = iq;
int ret = iq->data;
iq = iq->next;
delete copy;
return ret;
}