使用队列实现栈

使用队列实现栈
使用队列实现一个栈的主要思想就是采用两个队列,一个为存放数据,一个为辅助,为什么会是这个样子的呢?因为栈是先进后出,而队列是先进先出
假设现在有两个队列:data和help
入栈时:
将数据压入data队列
出栈时:
将data的数据除最后一个外,全部压人help中,这么做只是为了把最后一个数据拿出来
根据队列的性质此时的help中的数据只是比原来的data少最后一个数据其他的都没有变化
此时data队列只剩一个数据,也就是最后压入的数据,将该数据出队,最后将help与data进行交换,

package train;

import java.util.LinkedList;
import java.util.Queue;

public class 队列实现栈 {
    public class Node {
        public Queue<Integer> q1;
        public Queue<Integer> help;
        public int value ;
        public Node (int data) {
            this.q1 = new LinkedList();
            this.help = new LinkedList();
            this.value = data;
        }
        //压人
        public void push (int data) {
            q1.add(data);
        }
        //出栈
        public int pop(){
            if (q1.isEmpty()){
                return -1;
            }
            while (q1.size()>1) {
                help.add(q1.poll());
            }
            int data = q1.poll();
            return  data;
        }
        //获得栈顶元素
        public int peek(){
            if (q1.isEmpty()){
                return -1;
            }
            while (q1.size()>1) {
                help.add(q1.poll());
            }
            int data = q1.poll();
            help.add(data);
            swap(help,q1);
            return data;
        }
        //交货help和q
        public void swap(Queue  help,Queue  q1){
            Queue temp = help;
            help =q1;
            q1 =temp;
        }
    }
}


版权声明:本文为li15006474642原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。