用双队列实现栈
import java.util.LinkedList;
public class TestMain {
public static void main(String[] args) throws Exception {
twoqueueltostack t = new twoqueueltostack();
t.push(1);
t.push(2);
t.push(3);
System.out.println(t.pop());
System.out.println(t.pop());
}
}
class twoqueueltostack{
LinkedList<Integer> queuel1 = new LinkedList<Integer>();
LinkedList<Integer> queuel2 = new LinkedList<Integer>();
public void push(int node){
if(queuel1.size()==0 && queuel2.size()==0){
queuel1.add(node);
}
if(queuel1.size()!=0){
queuel1.add(node);
}else if(queuel2.size()!=0){
queuel2.add(node);
}
}
public int pop() throws Exception{
Integer temp =null;
if(queuel1.size()==0 && queuel2.size()==0){
throw new Exception("栈为空");
}
if(queuel2.size()==0){
while(queuel1.size()>0){
temp = queuel1.remove();
if(queuel1.size()!=0){
queuel2.add(temp);
}
}
}else if(queuel1.size()==0){
while(queuel2.size()>0){
temp = queuel2.remove();
if(queuel2.size()!=0){
queuel1.add(temp);
}
}
}
return temp;
}
}
用双栈实现队列
import java.util.Stack;
public class Solution {
Stack<Integer> stack1 = new Stack<Integer>();
Stack<Integer> stack2 = new Stack<Integer>();
public void push(int node) {
stack1.push(node);
}
public int pop()throws Exception {
if(stack2.isEmpty()){
while(!stack1.isEmpty()){
stack2.push(stack1.pop());
}
}
if(stack2.isEmpty()){
throw new Exception("队列为空,不能删除");
}
return stack2.pop();
}
}