zoukankan      html  css  js  c++  java
  • java 队列和栈相互实现

    一、队列实现栈

    public class queue2stack {
    
        public static void main(String[] args) {
    QS qs
    = new QS(); qs.push("1"); qs.push("2"); qs.push("3"); System.out.println(qs.pop()); System.out.println(qs.pop()); System.out.println(qs.peek()); QS qs2 = new QS(); qs2.push("1"); qs2.push("2"); qs2.push("3"); System.out.println(qs2.pop()); System.out.println(qs2.pop()); System.out.println(qs2.peek()); } static class QS{ private Queue queueMain = new ArrayDeque(); private Queue queueWork = new ArrayDeque(); public boolean push(Object object){ try { queueMain.offer(object); return true; } catch (Exception e) { return false; } } public int size() { return queueMain.size(); } public Object pop(){ if(queueMain.isEmpty()) { return null; } Queue temp = new ArrayDeque(); int size = queueMain.size(); for (int i = 0; i < size - 1; i ++) { temp.offer(queueMain.poll()); } Object o = queueMain.poll(); int size1 = temp.size(); for (int i = 0; i < size1; i ++) { queueMain.offer(temp.poll()); } return o; } public Object peek(){ if(queueMain.isEmpty()) { return null; } Queue temp = new ArrayDeque(); int size = queueMain.size(); for (int i = 0; i < size - 1; i ++) { temp.offer(queueMain.poll()); } Object o = queueMain.peek(); temp.offer(queueMain.poll()); int size1 = temp.size(); for (int i = 0; i < size1; i ++) { queueMain.offer(temp.poll()); } return o; } public boolean empty(){ return queueMain.isEmpty(); } /**********优化***********/ public boolean push2(Object object){ try { if (queueMain.isEmpty() && queueWork.isEmpty()) { queueMain.offer(object); } if (queueMain.isEmpty()) { queueWork.offer(object); } if(queueWork.isEmpty()) { queueMain.offer(object); } return true; } catch (Exception e) { return false; } } public Object pop2(){ if(queueMain.isEmpty() && queueWork.isEmpty()) { return null; } if (queueMain.isEmpty()) { while (queueWork.size() > 1) { queueMain.offer(queueWork.poll()); } return queueWork.poll(); } if (queueWork.isEmpty()) { while (queueMain.size() > 1) { queueWork.offer(queueMain.poll()); } return queueMain.poll(); } return null; } public Object peek2(){ if(queueMain.isEmpty() && queueWork.isEmpty()) { return null; } if (queueMain.isEmpty()) { while(queueWork.size() > 1) { queueMain.offer(queueWork.poll()); } Object e = queueWork.peek(); queueMain.offer(queueWork.poll()); return e; } if (queueWork.isEmpty()) { while(queueMain.size() > 1) { queueWork.offer(queueMain.poll()); } Object e = queueMain.peek(); queueWork.offer(queueMain.poll()); return e; } return null; } } }

    二、栈实现队列

    public class Stack2queue {
    
        public static void main(String[] args) {
    
            SQ sq = new SQ();
            sq.offer("a");
            sq.offer("b");
            sq.offer("c");
            System.out.println(sq.poll());
            System.out.println(sq.poll());
            sq.offer("d");
            sq.offer("e");
            System.out.println(sq.poll());
            System.out.println(sq.peek());
            System.out.println(sq.poll());
            System.out.println(sq.poll());
    
        }
    
        static class SQ{
    
            private Stack stackMain = new Stack();
            private Stack stackWork = new Stack();
    
            public boolean offer(Object ele) {
                stackMain.push(ele);
                return true;
            }
    
            public Object poll() {
                if (stackWork.empty()) {
                    while(stackMain.size() > 0) {
                        stackWork.push(stackMain.pop());
                    }
                }
    
                if (stackWork.empty()) {
                    return null;
                }
                return stackWork.pop();
            }
    
            public Object peek() {
                if (stackWork.empty()) {
                    while(stackMain.size() > 0) {
                        stackWork.push(stackMain.pop());
                    }
                }
    
                if (stackWork.empty()) {
                    return null;
                }
                return stackWork.peek();
            }
        }
    
    }

    结果自行运行测试

  • 相关阅读:
    Stream 常规操作
    Stream Introduction
    那些从阿里巴巴走出的创业牛人们
    码农转型传统行业更容易成功?
    创业者怎么讲故事打动投资人?
    李明远:移动互联网的创业时代
    想当年,那些抄我们试卷的坏分子,如今个个都当了老板.
    为什么说淘宝创业已难赚钱?
    让低版本IE支持Html5的新语义标签
    译文:TypeScript新手指南
  • 原文地址:https://www.cnblogs.com/kingsonfu/p/9329411.html
Copyright © 2011-2022 走看看