Q是一个队列,S是一个空栈,实现将队列中的元素逆置的算法。
解析:由于对队列的一系列操作不可能将其中的元素逆置,而栈可以将入栈的元素逆序提取出来,因此我们可以让队列中的元素逐个地出队列,入栈;全部入栈后再逐个出栈,入队列。
算法实现内联代码片。
void Inverser(Stack S, Queue Q)
{
while(!QueueEmpty(Q))
{
x = DeQueue(Q); //队列中全部元素依次出队
Push(S,x); //元素依次入栈
}
while(!StackEmpty(S))
{
Pop(S,x); //栈中全部元素依次出栈
EnQueue(Q,x); //再入队
}
}
小知识:栈与队列的区别:限定表中插入和删除操作位置的不同

博客围绕将队列Q中元素逆置展开,因队列操作无法实现元素逆置,而栈可将入栈元素逆序提取,所以让队列元素逐个出队列、入栈,全部入栈后再逐个出栈、入队列,还提及栈与队列在插入和删除操作位置上的区别。

586

被折叠的 条评论
为什么被折叠?



