数据结构与算法分析(Java 语言描述)(36)—— 使用两个队列实现一个栈

来源:互联网 发布:通过intent传递数据 编辑:程序博客网 时间:2024/04/30 06:20

思路:

入栈操作:

  1. 直接对 queue_1 进行 add 操作

出栈操作:

  1. 若 queue_1 的长度 > 1,对 queue_1 进行 remove 操作,将这些数据放入 queue_2 中,直到 queue_1 只剩下一个元素为止
  2. queue_1 剩余的元素即为应该 出栈的元素, remove 操作
  3. 将 queue_2 中的元素放回到 queue_1 中

大致的示意图:

这里写图片描述

package com.dataStructure.stack;import java.util.LinkedList;import java.util.Queue;public class UseQueueToImplStack {    private Queue<Integer> queue_1;    private Queue<Integer> queue_2;    private int count;    public UseQueueToImplStack(){        queue_1 = new LinkedList<>();        queue_2 = new LinkedList<>();        count = 0;    }    public boolean isEmpty(){        return count == 0;    }    public void push(int num){        queue_1.add(num);        count++;    }    public int pop(){        while (queue_1.size() > 1)            queue_2.add(queue_1.remove());        int result = queue_1.remove();        count--;        while (!queue_2.isEmpty())            queue_1.add(queue_2.remove());        return result;    }    public static void main(String[] args){        UseQueueToImplStack stack = new UseQueueToImplStack();        stack.push(6);        stack.push(2);        stack.push(1);        System.out.print(stack.pop() + " ");        stack.push(3);        System.out.print(stack.pop() + " ");        stack.push(5);        System.out.print(stack.pop() + " ");        stack.push(7);        while (!stack.isEmpty()){            System.out.print(stack.pop() + " ");        }    }}

这里写图片描述

阅读全文
0 0
原创粉丝点击