用两个栈实现队列
2019-04-16 本文已影响0人
firststep
题目:
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
思路:
- 用两个栈来实现队列的操作,首先理解队列的属性是“先进先出”,栈是先进后出。
- 第一个栈来装属性,第二栈来输出属性。
- 当第二个栈为空的时候,把第一个栈的存到第二个栈里面输出,刚好符合队列的先进先出原则。
- 当第二个栈不为空的时候,直接pop出去。pop出去的刚好是第一个栈前面的内容同时符合先进先出原则。
代码:
package queueStudy;
import java.util.Stack;
public class QueueForStack {
Stack<Integer> stackAdd = new Stack();
Stack<Integer> stackOut = new Stack();
public int pop() {
if (stackOut.isEmpty()) {
while(!stackAdd.isEmpty()){
stackOut.push(stackAdd.pop());
}
}
return stackOut.pop();
}
public void push(int item) {
stackAdd.push(item);
}
public static void main(String args[]) {
QueueForStack queueForStack = new QueueForStack();
queueForStack.push(1);
queueForStack.push(2);
queueForStack.push(3);
System.out.print(queueForStack.pop());
System.out.print(queueForStack.pop());
System.out.print(queueForStack.pop());
queueForStack.push(4);
System.out.print(queueForStack.pop());
}
}
运行结果:
image.png感悟:
少许的积累或许没有感觉,慢慢的沉淀才能蜕变成精华。