关闭

利用两个栈实现队列---入队和出队

标签: 队列
1125人阅读 评论(0) 收藏 举报
分类:

栈是先入后出,队列是先入先出。根据这个思想,可以用一个栈作为入队,另一个栈作为出队。只要把第一个栈的栈顶的元素压入第二个栈就好了,出队的时候输出第二个栈的栈顶,如果第二个栈的空了就需要不断操作从第一个栈的栈顶压入第二个栈,但是如果第一个栈也空了,那就说明所有元素都输出来了。

这里写图片描述

package stackAndQuence;

import java.util.Stack;

/**
 * 使用两个栈实现队列,出队和入队
 * @author duola
 *
 */
public class stackToQuence {

    static Stack<Integer> s1=new Stack<Integer>();
    static Stack<Integer> s2=new Stack<Integer>();

    //在尾部追加元素,
    public  void addtail(int a) {
        s1.push(a);
    }

    //删除元素,
    public  int dele() {
        if(s1.size()+s2.size()!=0){
            if(s2.isEmpty()) //即使新入栈一个元素。但是只要s2不是空的就一定要保证把s2的栈顶输出,直到s2空
                s1tos2();
            return s2.pop();
        }
        else {
            return -1;
        }
    }

    public void s1tos2(){
        while(!s1.isEmpty()){
            s2.push(s1.pop());
        }
    }

    public static void main(String [] args) {
        stackToQuence q=new stackToQuence();
        q.addtail(0);
        q.addtail(1);
        q.addtail(3);
        q.addtail(5);
        System.out.print(q.dele());
        q.addtail(7);
        System.out.print(q.dele());

    }

}
1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:177787次
    • 积分:4724
    • 等级:
    • 排名:第6363名
    • 原创:168篇
    • 转载:49篇
    • 译文:1篇
    • 评论:48条
    最新评论