zoukankan      html  css  js  c++  java
  • 用队列实现栈

    实现原理:假设queue,help两个队列。
    push操作时,将数据压入queue队列。
    pop操作时 将queue队列的数据只保留最后一个,其余压入help队列。然后将最后一个弹出。
    这样就保证了栈的后进先出,之后交换两个队列,有数据的一直存放在queue中。
    public class QueueToStack {
    private Queue<Integer> queue;
    private Queue<Integer> help;
    public QueueToStack(){
    queue = new LinkedList<>();
    help = new LinkedList<>();
    }
    public void push(int number){
    queue.add(number);
    }
    public Integer pop(){
    if(queue.isEmpty()){
    throw new RuntimeException("the stack is empty");
    }
    while (queue.size()!=1){
    this.help.add(queue.poll());
    }
    int data = queue.poll();
    swap();
    return data;
    }
    public Integer peek(){
    if(queue.isEmpty()){
    return null;
    }
    while (queue.size()!=1){
    this.help.add(queue.poll());
    }
    int data = queue.poll();
    help.add(data);
    swap();
    return data;
    }
    public void swap(){
    Queue<Integer> temp = queue;
    queue = help;
    help = temp;
    }
    }
    总结:用两个队列实现栈,本质上就是把先进先出变成先进后出,所以每次弹出最后一个进入队列的元素即可。
  • 相关阅读:
    sqli-labs(43)
    sqli-labs(42)
    sqli-labs(41) and 两php函数的讲解
    php的mysql语法
    msf
    域的建立过程
    sqli-labs(40)
    sqli-labs(39)
    sqli-labs(38)
    虚拟化之docker
  • 原文地址:https://www.cnblogs.com/liuwentao/p/9388161.html
Copyright © 2011-2022 走看看