解析:由于对队列的一系列操作不可能将其中的元素逆置,而栈可以将入栈的元素逆序提取出来,因此我们可以让队列中的元素逐个地出队列,入栈;全部入栈后再逐个出栈,入队列。算法实现内联代码片。
voidInverser(StackS,QueueQ){ while(!QueueEmpty(Q)) { x=DeQueue(Q); //队列中全部元素依次出队 Push(S,x); //元素依次入栈 } while(!StackEmpty(S)) { Pop(S,x); //栈中全部元素依次出栈 EnQueue(Q,x); //再入队 } }
小知识:
栈与队列的区别:限定表中插入和删除操作位置的不同
栈和队列的逻辑结构都是线性结构,都可以采用顺序存储或者链式存储
队列的如对顺序和出队顺序是一致的,这是和栈的不同之处
由于再队头做出出队操作,为了便于删除队头元素,故总是选择链头作为队头。
队列先进先出的特性表现再:先进队列的元素先出队列,后进队列的元素后出队列,进队列对应的是插入操作,出队列对应的是删除操作。
预览时标签不可点