您的位置:首页 > 其它

用双队列实现栈和用双栈实现队列

2016-07-13 17:31 288 查看
用双队列实现栈

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();

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: