题目:如题,就是用两个栈实现队列的特性
网络异常,图片无法展示
|
1 基本架构
首先我们声明两个栈和自定义队列的基本结构、功能
static class MyQueue<E> { /** * 首先声明两个栈 */ public Stack stack1 = new Stack<E>(); public Stack stack2 = new Stack<E>(); /** * 添加操作 * @param e */ public void push(E e) { } /** * 弹出操作 * @return */ public E pop() { return (E) stack2.pop(); } } 复制代码
2 实现思路
网络异常,图片无法展示
|
3 具体实现
接下来我们按步骤进行编码
static class MyQueue<E> { /** * 首先声明两个栈 */ public Stack stack1 = new Stack<E>(); public Stack stack2 = new Stack<E>(); /** * 添加操作 * * @param e */ public void push(E e) { //将元素压入stack1 stack1.push(e); } /** * 弹出操作 * * @return */ public E pop() { //如果stack2为空,将stack1元素全部放入stack2 if (stack2.isEmpty()) { while (!stack1.isEmpty()) { stack2.push(stack1.pop()); } //如果不为空,直接弹出 } else { return (E) stack2.pop(); } //全部为空时抛出异常 if (stack1.isEmpty() && stack2.isEmpty()) { throw new NoSuchElementException(); } return (E) stack2.pop(); } } 复制代码
4 测试
public static void main(String[] args) { MyQueue<Integer> queue = new MyQueue<>(); queue.push(1); queue.push(2); queue.push(3); System.out.println(queue.pop()); System.out.println(queue.pop()); queue.push(4); queue.push(5); System.out.println(queue.pop()); } 复制代码
运行结果:
网络异常,图片无法展示
|
测试结果是严格按照先进先出来执行