算法 第四版 1.3.33 ResizingArrayDeque
来源:互联网 发布:网络市场调研报告 编辑:程序博客网 时间:2024/06/05 15:24
package Cap1;import java.util.Iterator;import edu.princeton.cs.introcs.StdOut;public class ResizingArrayDeque<Item> implements Iterable<Item> {private Item[] a = (Item[]) new Object[1];private int N = 0;public boolean isEmpty(){ return N == 0; }public int size(){ return N; }private void resize(int length){Item[] temp = (Item[]) new Object[length];for(int i=0;i<N;i++){temp[i] = a[i];}a = temp;}public void pushLeft(Item item){if(N == a.length) resize(2*a.length);for(int i=N-1;i>=0;i--){a[i+1] = a[i];}a[0] = item;N ++ ;}public void pushRight(Item item){if(N == a.length) resize(2*a.length);a[N++] = item;}public Item popLeft(){if(isEmpty()) return null;Item item = a[0];for(int i=0;i<N-1;i++){a[i] = a[i+1];}a[--N]=null;if(N <= a.length/4) resize(a.length/2);return item;}public Item popRight(){if(isEmpty()) return null;Item item = a[--N];a[N] = null;if(N <= a.length/4) resize(a.length/2);return item;}@Overridepublic Iterator<Item> iterator() {// TODO Auto-generated method stubreturn new ResizingArrayDequeIterator();}private class ResizingArrayDequeIterator implements Iterator<Item>{private int cur = 0;@Overridepublic boolean hasNext() {// TODO Auto-generated method stubreturn cur != N;}@Overridepublic Item next() {// TODO Auto-generated method stubreturn a[cur++];}@Overridepublic void remove() {// TODO Auto-generated method stub}}public static void main(String[] args) {ResizingArrayDeque<Integer> r = new ResizingArrayDeque<Integer>();for(int i=0;i<10;i++){r.pushLeft(i);r.pushRight(i);}for(int i=0;i<10;i++){r.popLeft();}for(Integer i : r)StdOut.println(i);}}
阅读全文
0 0
- 算法 第四版 1.3.33 ResizingArrayDeque
- 算法第四版 练习1.3.33
- 算法-第四版-练习1.3.33解答
- 算法(第四版) 1.3答案
- 《算法(第四版)》 习题:1.3.9
- 《算法(第四版)》 习题:1.3.14
- 《算法(第四版)》 习题:1.3.19
- 算法第四版 练习1.3.31
- 算法第四版 练习 1.3.34
- 算法第四版 练习1.3.35
- 算法第四版 练习 1.3.39
- 《算法(第四版)》 1.3.10 中序转后序
- 《算法(第四版)》 1.3.12
- 算法 第四版 1.3.32 Steque
- 算法 第四版 1.3.34 RandomBag
- 算法 第四版 1.3.39 环形缓冲区
- 算法 第四版 1.3.43 文件列表
- 算法-第四版-1.3.14答案
- 给新人程序员一些经验
- c# 通用的工具类(CommonLibrary)
- 【学习笔记】nginx静态页面部署
- js清除浏览器缓存的几种方法
- CF 817D(线段树 计数 pre数组)
- 算法 第四版 1.3.33 ResizingArrayDeque
- 【05】Bootstrap — 代码
- 数据集
- 重返oi第五十四天有感
- Spring 4.0新特性-----泛型依赖注入
- c# 冒泡排序
- Servlet 生命周期、工作原理
- JAVA实现邮件的发送
- Spring详解(二)------IOC控制反转