用两个栈实现队列的进队列以及删除队列头的操作;用两个队列实现栈的入栈以及出栈功能
具体代码:
/**
*
* @author luzi
*用两个栈实现队列的功能
*用两个队列实现栈的功能
*/
public class oj3 {
Stack<Integer> stack1 = new Stack<Integer>();
Stack<Integer> stack2 = new Stack<Integer>();
Queue<Integer> que1 = new LinkedList<Integer>();
Queue<Integer> que2 = new LinkedList<Integer>();
//两个栈实现队列功能
public void add(int node) {
stack1.add(node);
}
public int remove() {
int temp=0;
if(stack2.isEmpty()){
while(!stack1.isEmpty())
stack2.push(stack1.pop());
}
temp = stack2.pop();
return temp;
}
//用两个队列实现栈的功能
public void push(int n){
if(que2.isEmpty())
que1.add(n);
else
que2.add(n);
}
public int pop(){
int temp = 0;
if(!que1.isEmpty()){
while(que1.size() > 1){
que2.add(que1.remove());
}
temp = que1.remove();
}
else
if(!que2.isEmpty()){
while(que2.size() > 1){
que1.add(que2.remove());
}
temp = que2.remove();
}
return temp;
}
}