王君安和方亚芬演出:请帮忙数据结构

来源:百度文库 编辑:高考问答 时间:2024/04/29 00:57:25
已知Q是一个非空队列,S是一个空栈。仅用队列和栈的ADT函数和少量工作变量,使用C语言编写一个算法,将队列Q中的所有元素逆置。
栈的ADT函数有:
makeEmpty(s:stack);置空栈
push(s:stack;value:datatype);新元素value进栈
pop(s:stack):datatype;出栈,返回栈顶值
isEmpty(s:stack):boolean;判栈空否
队列的ADT函数有:
enqueue(q:queue;value:datatype);元素value进队
deQueue(q:queue):datatype;出队列,返回队头值
isEmpty(q:queue):boolean;判队列空否

do{
makeEmpty(s);
push(s,deQueue(q));
}while(isEmpty(q));
do{
enQueue(q,pop(s));
}while(isEmpty(s));
可以吗?

makeEmpty(s);
while(!isEmpty(q))
{
push(s, deQueue(q));
}
while(!isEmpty(s))
{
enQueus(1, pop(s));
}