package com.github.orajavac.coding2017.basic.stack;
/**
* (1)入栈:Q1:1,2,3,4入队列(相当于入栈);
(2)出栈:Q1:1,2,3出队列,Q2:1,2,3入队列;(此时Q1只剩4,正是我们要出栈的元素)
(3)
1>入栈:Q1:5入队列(每次入栈都用Q1入队列实现,而不入队列Q2,这样会提高效率,后面会说到)
2>出栈:判断:如果Q1队列不为空就用(1)(2)步的方法出栈最后一个元素。否则,出栈Q2队列的最后一个元素。
* @author ora
*
*/
public class StackWithTwoQueues {
private Stack q1 = new Stack();
private Stack q2 = new Stack();
public void push(int data) {
q1.push(data);
}
public int pop() {
int len = q1.length();
while(len != 1){
q2.push(q1.popLow());
len--;
}
int result = Integer.parseInt(q1.popLow().toString());
//再push回去
len = q2.length();
while(len != 0){
q1.push(q2.popLow());
len--;
}
return result;
}
//测试使用,观察栈里元素
public String toString(){
System.out.println(q1.positiveToString());
return q1.positiveToString();
}
}