问题描述
用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能
思路分析
根据栈先进后出的特点,一个栈push元素后,另一个栈可push进它出栈的元素,这样存储的不就是原先顺序的元素吗,也就是原先栈顶元素现在在栈底
码上有戏
|
|
两个队列实现一个栈
有了上面的经验,我们发现,可以用同样的思想去实现两个队列实现一个栈,当然还是有点不一样的
它的核心思想就是将一个队列的元素除队尾元素都放到另一个队列中,轮流操作就是栈了
码上有戏
|
|
测试:
queue.push(“a”);
queue.push(“b”);
queue.push(“c”);
System.out.println(queue.pop().toString());
System.out.println(queue.pop().toString());
queue.push(“d”);
System.out.println(queue.pop().toString());
结果:
[a, b]
[a]
[a]