利用栈Stack实现队列(Queue)
2017-06-13 17:08
246 查看
实现说明:
入队时,将元素压入s1;
出队时,推断s2是否为空,如不为空,则直接弹出顶元素;如为空。则将s1的元素逐个“倒入”s2。把最后一个元素弹出并出队;
这个思路,避免了重复“倒”栈,仅在须要时才“倒”一次。
package com.knowledgeStudy.threadLocal; import java.util.Stack; public class MyQueue { Stack<Object> s1 = new Stack<Object>();//入栈 Stack<Object> s2 = new Stack<Object>();//出栈 // Push element x to the back of queue. public void push(Object x) { s1.push(x); } // Removes the element from in front of queue. public void pop() { if (!s2.isEmpty()) { s2.pop(); } else { while (!s1.isEmpty()) { s2.push(s1.pop()); } s2.pop(); } } // Get the front element. public Object peek() { if (!s2.isEmpty()) { return s2.peek(); } else { while (!s1.isEmpty()) { s2.push(s1.pop()); } return s2.peek(); } } // Return whether the queue is empty. public boolean empty() { return s1.empty() && s2.empty(); } //測试 public static void main(String[] args) { MyQueue queue = new MyQueue(); queue.push(1); queue.pop(); System.out.println(queue.empty()); } }
相关文章推荐
- 利用栈Stack实现队列(Queue)
- LeetCode学习之-232. 利用堆栈实现队列(Implement Queue using Stacks)
- 面试题---使用栈stack实现队列queue
- 创建自己的队列Queue底层实现利用数组
- 利用Queue队列实现FIFO的算法
- Java实现栈Stack和队列Queue
- 两个栈实现一个队列——C++ 利用STL 栈stack实现
- 【java笔试系列四】Java实现栈Stack和队列Queue
- 利用redis实现消息队列之queue模式
- 【java笔试系列四】Java实现栈Stack和队列Queue
- 用结点实现链表LinkedList,用数组和结点实现栈Stack,用数组和结点链表实现队列Queue
- 使用栈Stack实现队列Queue
- java实现数据结构——栈Stack与队列Queue
- 利用队列实现杨辉三角的打印
- 多线程无锁(lock-free)队列(queue)的实现探讨
- C实现消息队列Queue
- 【数据结构与算法基础】以数组实现的循环队列 / Circular Queue implemented by array
- javascript中利用数组实现的循环队列代码
- 利用数组实现队列操作
- Java实现数据结构栈stack和队列Queue