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

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

    }

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

相关文章推荐

使用两个栈实现队列的入队、出队

这是数据结构中对栈的一个应用实例,在各大公司的面试中也是常考题,使用栈实现队列的入队、出队操作很简单,只需要两个栈,一个栈负责入栈=入队,另一个栈负责出栈=出队即可。  思路: 使用STL中的stac...

队列之出队入队

线性结构的俩种常见应用之二——队列 定义: 一种实现“先进先...

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

用两个栈模拟一个队列的入队和出队操作import java.util.Stack; public class QueueWithTwoStacks { Stack stack1 = new Stack...

大二队列的出队和入队分析(链式结构)C语言

大学的课程使用的是C语言 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行...

使用两个队列实现一个栈

队列是先进先出,而栈是先进后出;考虑到我们取栈顶元素的便利性,我们在实现时使得栈顶等于队列头;由于栈的pop弹出栈顶元素,而队列的pop也是弹出栈顶元素,所以我们需要特别处理的是插入操作。由于往栈中添...

队列的两种存储方式的介绍与实现

简介 队列是一种特殊的线性表,它的特殊之处在于它必须在队列的头部进行删除元素,在队列尾部插入元素。我们把队列的头部称为对头(front),队列尾部叫做队尾 (rear)。进行删除元素位置叫队头(fro...

队列的两种存储方式的介绍与实现(后续)

简介 队列分为顺序存储结构和链式存储结构,链式存储结构其实就是线性表的单链表,只是只能在对头出元素,队尾进元素而已。从之前实现的队列的顺序存储结构中 我们可以看到他的缺点,我们为了避免“假溢出”就...

利用两个栈实现队列的入队出队

import java.util.ArrayList; import java.util.Stack;/** @author:micro_hz 2015年8月18日 */ public class ...

2个堆栈实现自定义队列的入队出队方法 - 调用者定义2个栈的容量

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace MyQ...

链表实现队列的出队和入队,栈的入栈和出栈

队列的出队和入队 queue.h #ifndef QUEUE_H_ #define QUEUE_H_ #include typedef struct tagstudent{ int data;...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:利用两个栈实现队列---入队和出队
举报原因:
原因补充:

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