精华内容
下载资源
问答
  • 两个栈实现队列

    2020-02-15 15:45:52
    1、两个栈实现队列 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 思路 栈的特点:先进后出;对列的特点:先进先出 可用两个栈实现队列的衔接; 关键是:如何衔接 一个栈用作push栈...

    1、两个栈实现队列

    用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。

    思路

    栈的特点:先进后出;对列的特点:先进先出

    可用两个栈实现队列的衔接;

    关键是:如何衔接

    一个栈用作push栈;一个栈用作pop栈;

    当pop栈为空时,将push栈中的元素返存到pop栈中;

    当pop栈不为空时,直接从pop栈中取数据

    代码

    package D栈;
    
    import java.util.Stack;
    
    /**
     * @Author Zhou  jian
     * @Date 2020 ${month}  2020/2/15 0015  15:08
     * 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
     * 核心思想:通过两个栈实现 栈的反转操作
     * 难点:如何衔接
    
     */
    public class Problem1 {
    
        public static void main(String[] args) {
    
            Problem1 problem1 = new Problem1();
            problem1.push(1);
            problem1.push(2);
            System.out.println(problem1.pop());
    
            problem1.push(3);
            System.out.println(problem1.pop());
            System.out.println(problem1.pop());
    
    
    
        }
    
        Stack<Integer> stack1 = new Stack<Integer>();//专门用来存储元素的中介
        Stack<Integer> stack2 = new Stack<Integer>();//
    
        public void push(int node) {
            stack1.push(node);
        }
    
        public int pop() {
            //加入stack2栈为空,则把stack1栈中的元素添加都stack2中
            if(stack2.size()==0){
                int num = stack1.size();
                for(int i=0;i<num;i++){
                    stack2.push(stack1.pop());
                }
            }
                return stack2.pop();
        }
    
    
    
    }
    
    
    展开全文
  • 如何使用两个栈实现队列Java发布时间:2020-09-09 23:29:12来源:脚本之家阅读:100作者:ERFishing这篇文章主要介绍了如何使用两个栈实现队列Java,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的...

    如何使用两个栈实现队列Java

    发布时间:2020-09-09 23:29:12

    来源:脚本之家

    阅读:100

    作者:ERFishing

    这篇文章主要介绍了如何使用两个栈实现队列Java,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    题目

    用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。

    题解

    描述

    栈的特性是先进后出,队列的特点是先进先出,当数字依次入栈1后,依次出栈1并且压入栈2后,然后再出栈的顺序与进入栈1的顺序是一致的。

    因此,进入队列通过压入栈1实现,弹出队列通过弹出栈2的栈顶元素实现,在弹出元素时需要保证当前栈弹出元素的顺序和队列弹出元素的顺序一致,即栈1的元素应当全部压入到栈2中。

    code

    import java.util.Stack;

    public class Solution {

    Stack stack1 = new Stack();

    Stack stack2 = new Stack();

    public void push(int node) {

    //直接入stack1栈

    stack1.push(node);

    }

    public int pop() {

    //若stack2为空

    if(stack2.isEmpty()){

    while(!stack1.isEmpty()){

    stack2.push(stack1.pop());

    }

    }

    return stack2.pop();

    }

    }

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持亿速云。

    展开全文
  • 两个栈实现队列的pop和pushimport java.util.*;/*** 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。* 思路:入队列,直接用堆栈入就行* 出队列,当栈2位空的时候,把栈1所有的数据全部...

    两个栈实现队列的pop和push

    import java.util.*;

    /**

    * 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。

    * 思路:入队列,直接用堆栈入就行

    * 出队列,当栈2位空的时候,把栈1所有的数据全部pop到栈2;栈2不为空的时候,直接将剩余的pop出去。

    *

    */

    public class stackqueue {

    static Stack stack1 = new Stack();

    static Stack stack2 = new Stack();

    public void push(int node) {

    stack1.push(node);

    }

    public int pop() {

    if(stack2.empty()){

    while(!stack1.empty()){

    stack2.push(stack1.pop());

    }

    }

    return stack2.pop();

    }

    public static void main(String[] args) {

    stackqueue sq=new stackqueue();

    sq.push(1);

    sq.push(2);

    sq.push(3);

    sq.pop();

    sq.push(4);

    sq.pop();

    sq.pop();

    }

    }

    两个栈实现队列的pop和push

    import java.util.*;

    /**

    * 用两个队列来实现一个栈,完成队列的Push和Pop操作。 队列中的元素为int类型。

    * 思路:入队列,当前哪个队列有内容就存入哪个队列

    * 出队列,把当前有内容的队列1弹出队尾数据,应该把之前的数据全部push到队列2。

    *

    */

    public class queueStack {

    Queue queue1=new ArrayDeque();

    Queue queue2= new ArrayDeque();

    public void push(int node){

    //最开始插入的时候,优先插到queue1中

    if(queue1.isEmpty()&&queue2.isEmpty()){

    queue1.offer(node);

    }

    //哪个有内容插入哪个队列

    if(!queue1.isEmpty()&&queue2.isEmpty()){

    queue1.offer(node);

    }else if(queue1.isEmpty()&&!queue2.isEmpty()){

    queue2.offer(node);

    }

    }

    public int pop(){

    if(queue1.isEmpty()&&queue2.isEmpty()){

    try{

    throw new Error("栈是空的!");

    }catch(Exception e){

    }

    }

    if(queue2.isEmpty()){

    while(queue1.size()>1){

    queue2.offer(queue1.poll());

    }

    return queue1.poll();

    }

    if(queue1.isEmpty()){

    while(queue2.size()>1){

    queue1.offer(queue2.poll());

    }

    return queue2.poll();

    }

    return (Integer) null;

    }

    public static void main(String[] args){

    queueStack qs = new queueStack();

    qs.push(1);

    qs.push(2);

    System.out.println(qs.pop());

    qs.push(3);

    qs.push(4);

    System.out.println(qs.pop());

    System.out.println(qs.pop());

    qs.push(5);

    System.out.println(qs.pop());

    System.out.println(qs.pop());

    }

    }

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,620
精华内容 4,248
关键字:

两个栈实现队列