zoukankan      html  css  js  c++  java
  • 栈队列例题3:使用两个栈实现一个队列

    思路:

      使用两栈实现一个队列,stack1栈是用来push的,当要pop时,需要先把stack1栈的数据pop出来,用stack2栈push接收,这样就实现了反转,然后再将stack2栈中pop一下,就实现了犹如队列的出队操作。进行入栈时,再把stack2中的数据pop出来,用stack1栈push接收,然后stack1再push一下新进来的元素即可;

      

    代码如下:

     1 import java.util.Stack;
     2 
     3 public class QueueByTwoStacks<T> {
     4     private Stack<T> stack1=new Stack<T>(); //入栈时使用此栈
     5     private Stack<T> stack2=new Stack<T>(); //出栈时使用此栈
     6     
     7     public void enQueue(T element)
     8     {
     9         if(!stack2.isEmpty())
    10         {
    11             move(stack2,stack1);
    12         }
    13         stack1.add(element);
    14     }
    15     
    16     public T deQueue() 
    17     {
    18         T value;
    19         if(!stack1.isEmpty())
    20         {
    21             move(stack1,stack2);
    22             value=stack2.pop();
    23         }else {
    24             value=stack2.pop();
    25         }
    26         return value;
    27     }
    28     // 两个栈的互相转换
    29     public void move(Stack<T> stackOne,Stack<T> stackTwo)
    30     {
    31         while(!stackOne.isEmpty())
    32         {
    33             stackTwo.push(stackOne.pop());
    34         }
    35     }
    36     
    37 }

    测试代码:

     1 public class Test {
     2 
     3     public static void main(String[] args) {
     4         QueueByTwoStacks<String> qts=new QueueByTwoStacks<String>();
     5         qts.enQueue("one");
     6         qts.enQueue("two");
     7         qts.enQueue("three");
     8         qts.enQueue("four");
     9         qts.enQueue("five");
    10         System.out.println(qts.deQueue());
    11         System.out.println(qts.deQueue());
    12     }
    13 
    14 }

    结果:

  • 相关阅读:
    mac 配置环境变量
    c语言中的0UL或1UL是什么意思
    javascript类型系统——正则表达式RegExp类型
    javascript运算符——算术运算符
    javascript类型系统——Number数字类型
    javascript类型系统——包装对象
    javascript基础语法——表达式
    valueOf()方法
    toString()方法
    javascript基础语法——变量和标识符
  • 原文地址:https://www.cnblogs.com/LgxBoKeYuan/p/10220123.html
Copyright © 2011-2022 走看看