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

原创 2016年06月01日 10:11:01

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

这里写图片描述

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

    }

}
版权声明:本文为博主原创文章,未经博主允许不得转载。

队列的创建 入队出队 Java数据结构与算法

队列的创建 入队出队 Java数据结构与算法 源代码: /** * * @author sunnyykn */ class Queue { private int maxSi...
  • sunnyykn
  • sunnyykn
  • 2010年07月17日 13:14
  • 3425

剑指offer面试题java实现之题7:用两个栈模拟一个队列的入队和出队操作

用两个栈模拟一个队列的入队和出队操作import java.util.Stack; public class QueueWithTwoStacks { Stack stack1 = new Stack...
  • zsd498537806
  • zsd498537806
  • 2015年08月25日 20:44
  • 461

【数据结构】栈面试题--两个栈实现一个队列

首先我们必须清楚,栈先进后出,队列先进先出。这道他们各自的特点之后,我们用两个栈来实现一个队列。 下边给出图片: 下边给出代码: 恩...
  • peiyao456
  • peiyao456
  • 2016年09月21日 19:08
  • 1017

【数据结构】(面试题)使用两个栈实现一个队列(详细介绍)

使用两个栈实现一个队列思路一:我们设定s1是入栈的,s2是出栈的。入队列,直接压到s1即可出队列,先把s1中的元素倒入到s2中,弹出s2中的栈顶元素;再把s2的剩余元素全部倒回s1中。650) thi...
  • hanjing_1995
  • hanjing_1995
  • 2016年05月30日 17:18
  • 1195

利用两个栈实现队列的--->基本操作

面试题:使用两个栈实现一个队列  栈和队列都是我们经常使用的数据结构, 栈 -> 后进先出,  队列  ->  先进先出   何其相似, 既然如此, 我们可不可以  试着 用 两个栈来试试实现一个队...
  • ssopp24
  • ssopp24
  • 2017年05月09日 00:20
  • 647

两个栈实现队列+两个队列实现栈----java

两个栈实现队列+两个队列实现栈----java 一.两个栈实现一个队列 思路:所有元素进stack1,然后全部出stack1并进入stack2.实现队列的先进先出即:若stack2非空,我们需要的恰好...
  • u010093630
  • u010093630
  • 2014年08月08日 00:52
  • 10079

剑指Offer面试题7(Java版):用两个栈实现队列与用两个队列实现栈

题目:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deletedHead,分别完成在队列尾部插入节点和在队列头部删除节点的功能。 我们通过一个具体的例子来分析该队列插...
  • jsqfengbao
  • jsqfengbao
  • 2015年07月27日 19:25
  • 2547

~使用两个栈实现一个队列(优化版)~

~使用两个栈实现一个队列(优化版)~
  • manongdeyipiant
  • manongdeyipiant
  • 2017年04月29日 10:11
  • 304

java队列queue

Java多线程总结之线程安全队列Queue 在Java多线程应用中,队列的使用率很高,多数生产消费模型的首选数据结构就是队列。Java提供的线程安全的Queue可以分为阻塞队列和非阻塞队列,其中阻塞...
  • langwang2
  • langwang2
  • 2015年11月09日 22:42
  • 965

链式存储结构实现队列的入队和出队操作以及 栈的出栈和入栈操作

链式存储结构实现队列的入队和出队操作以及 栈的出栈和入栈操作其实本质上就是用含头结点的单链表来模拟队列的入队和出队,以及栈的入栈和出栈 换句话来形容,用单链表来实现队列和栈 对于队列: 存储结构 ...
  • u010667082
  • u010667082
  • 2015年07月22日 15:12
  • 4785
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:利用两个栈实现队列---入队和出队
举报原因:
原因补充:

(最多只允许输入30个字)