【算法导论】用两个堆实现栈
来源:互联网 发布:货币网络个人基金产品 编辑:程序博客网 时间:2024/06/07 03:02
好久没写java了,用java实现一个吧;
用两个堆实现栈:
import java.util.Queue;import java.util.concurrent.ArrayBlockingQueue;interface Stacked<E> {void push(E newElement);E pop();}class OutofRangeException extends RuntimeException {/** * */private static final long serialVersionUID = 1L;public OutofRangeException(String message) { super(message); }}// 用队列实现栈public class Stack<E> implements Stacked<E> {protected static final int QUEUE_SIZE = 100;protected static final int TOTAL_SIZE = 2 * QUEUE_SIZE;public static final int STACK_SIZE = QUEUE_SIZE;protected Queue<E> queue = new ArrayBlockingQueue<E>(QUEUE_SIZE);protected Queue<E> backupQueue = new ArrayBlockingQueue<E>(QUEUE_SIZE);public Stack() { }@Overridepublic void push(E newElement) {if (this.queue.size() >= QUEUE_SIZE) throw new OutofRangeException("Out of Range");this.queue.add(newElement);}@Overridepublic E pop() {E result = popQueueToBackupQueue();;popBackupQueueToQueue();return result;}// 以倒序复制到backupQueue中protected E popQueueToBackupQueue() {while (queue.size() != 1) {backupQueue.add(queue.remove());}return queue.remove();}// 以倒序复制到queue中protected void popBackupQueueToQueue() {while (!backupQueue.isEmpty()) {queue.add(backupQueue.remove());}}}
0 0
- 【算法导论】用两个堆实现栈
- 算法导论堆实现
- 算法导论 10.1-2 用一个数组实现两个栈
- 算法导论 用两个队列实现一个栈 10.1-7
- 算法导论 使用两个栈实现队列
- 【算法导论】堆排序实现
- 【算法导论】手动实现堆
- 算法导论堆排序实现
- 算法导论 习题6.2-5 用迭代法实现堆排序
- 算法导论 习题6.2-5 用迭代法实现堆排序
- 【算法导论】c++实现堆排序
- 堆排序__算法导论实现
- 算法导论堆排序Java实现
- 堆排序C语言实现 算法导论
- 算法导论C语言实现: 堆排序
- 《算法导论的Java实现》 堆排序
- 算法导论 堆排序 C语言实现
- 算法导论堆排序java实现
- Google Chrome清除缓存高级技巧
- POJ 2492 A Bug's Life(路径压缩并查集)
- jQuery上传插件Uploadify 3.2使用
- layout_weight属性的那些坑
- 【C解析之三】C语言的内存分配
- 【算法导论】用两个堆实现栈
- CareerCup Given a binary matrix of N X N of integers , you need to return only unique rows of binary
- Hadoop2.2.0单节点安装及测试
- 深入理解Sqlserver文件存储之页和应用
- SQL优化笔记
- 以文化体制改革提升国家治理能力
- Jquery学习笔记
- MFC的多线程编程
- adb server didnt ack