题目:
1.使用两个栈实现一个队列。实现队列的两个函数,入队和出队。
2.使用两个队列实现一个栈,实现栈的入栈出栈。
思路:
使用辅助,用题目1举例,使用栈1和栈2实现。
入队操作:
1.先将栈1所有元素放到栈2,
2.将新元素放入栈1
3.将栈2元素放回栈1
这样,新元素就在栈1的底部。
出队操作:
直接将栈1栈顶元素出栈即可。
题目二同理
import java.util.Stack;
/* 使用两个栈 完成一个队列*/
public class aQueen {
public aQueen(){
stack1 = new Stack<>();
stack2 = new Stack<>();
}
Stack<Integer> stack1;
Stack<Integer> stack2;
public void enqueue(int n){
while (!stack1.isEmpty()){
int i = stack1.pop();
stack2.push(i);
}
stack1.push(n);
while (!stack2.isEmpty()){
int i = stack2.pop();
stack1.push(i);
}
}
public int dequeue(){
return stack1.pop();
}
}
import java.util.*;
/*使用两个队列完成一个栈*/
public class aStack {
Queue<Integer> queue1;
Queue<Integer> queue2;
public aStack(){
queue1 = new LinkedList<>();
queue2 = new LinkedList<>();
}
public void push(int n){
while (!queue1.isEmpty()){
int i = queue1.poll();
queue2.add(i);
}
queue1.add(n);
while (!queue2.isEmpty()){
int i = queue2.poll();
queue1.add(i);
}
}
public int pop(){
return queue1.poll();
}
}