找考题网-背景图
问答题

下面是队列QUEUE和栈STACK的主要操作:
QUEUE:(设定每个队列元素的数据类型为Type)
bool isEmpty(QUEUE Q); //判断队列空否,true为空,false不空
bool getFront(QUEUE Q,Type&x); //通过x返回队头元素的值
void enQueue(QUEUE Q,Type x); //将新元素x插入到队列的队尾
void deQueue(Queue Q); //从队列中退出队头元素
STACK:(设定每个栈元素的数据类型与队列相同,为Type)
void initStack(STACK S); //对新创建的栈初始化,置成空栈
bool isEmpty(STACK S); //判断栈空否,true栈空,false不空
void push(STACK S,Type x); //将新元素X进栈
void pop(STACK S); //栈顶元素退栈
bool getTop(STACK S,Type&x); //通过x返回栈顶元素的值
利用以上栈和队列的操作,编写以下针对队列的函数的实现代码(要求非递归实现)。 “判等”函数bool equal(QUEUE Q1,QUEUE Q2)

【参考答案】

“判等”函数。本函数做判等比较,所以判断之后,原队列的内容应保持比较之前的状态,不能因判断而改变,所以函数参数表中的两个队列应是传值型参数,不应是引用型参数,Q1和Q2是实际参数的副本。算法思路是:当两个队列都非空时,做对应元素比较,一旦发现不等则立即可以断定两个队列不等并退出比较,否则继续比较。当......

(↓↓↓ 点击‘点击查看答案’看完整答案 ↓↓↓)