【数据结构】栈的数组实现
来源:互联网 发布:如何获取扫描枪的数据 编辑:程序博客网 时间:2024/05/22 17:37
import java.util.EmptyStackException;public class ArrayStack<T> implements Cloneable{private T[] data;private int manyItems;// 默认构造函数public ArrayStack(){final int INITIAL_CAPACITY = 10;manyItems = 0;data = (T[]) new Object[INITIAL_CAPACITY];}public ArrayStack(int initialCapacity){manyItems = 0;data = (T[]) new Object[initialCapacity];}// 生成栈的一个副本public ArrayStack<T> clone(){ArrayStack<T> answer;try{answer = (ArrayStack<T>)super.clone();} catch (CloneNotSupportedExceptione){throw new RuntimeException("this class does not implement Cloneable.");}answer.data = data.clone();return answer;}// 改变栈当前的容量public void ensureCapacity(int minimumCapacity){T[] newArr;if (data.length < minimumCapacity){newArr = (T[])new Object[minimumCapacity];System.arraycopy(data, 0, newArr, 0, manyItems);data = newArr;}}// 存取方法,用于确定栈的当前容量。public int getCapacity(){return data.length;}// 判断是否为空public boolean isEmpty(){return (manyItems == 0);}// 在不移除栈顶元素的情况下,获得栈顶数据项的值public T peek(){if (manyItems == 0){throw new EmptyStackException();}return data[manyItems -1];}// 获得栈顶数据项,并将其从栈中移出public T pop(){if (manyItems == 0){throw new EmptyStackException();}// 获得栈顶项T answer = data[manyItems - 1];manyItems = manyItems - 1;data[manyItems] = null;return answer;}// 将一个数据项压入栈中,新的数据项可以是空引用public void push(T item){if (data.length == manyItems){ensureCapacity(manyItems*2 + 1);}data[manyItems] = item;manyItems++;}// 用于确定栈中数据项个数的存取方法public int size(){return manyItems;}public void trimToSize(){T trimmedArray[];if (data.length == manyItems){trimmedArray = (T[]) new Object[manyItems];System.arraycopy(data, 0, trimmedArray, 0, manyItems);data = trimmedArray;}}}
0 0
- 【数据结构】栈-数组的实现
- [数据结构] 栈的数组实现
- 数组实现栈的数据结构
- 【数据结构】栈的数组实现
- 【数据结构】栈的数组实现
- 数据结构-----栈数组实现
- 数据结构---栈(数组实现)
- 数据结构栈stack的动态数组实现
- 经典数据结构--数组实现的栈
- 【C++数据结构】动态数组栈的实现
- 数据结构和算法--栈的数组实现
- 数据结构 -- 栈的数组实现法
- 【数据结构】队列-数组的实现
- 数据结构-用数组实现栈
- 简单数据结构---数组实现栈
- 【JAVA数据结构】栈(数组实现)
- 数据结构-栈-数组实现对头的双栈
- 各种数据结构的完整实现之 数组栈
- [Unity3D]清理material中无用的的property
- 【C#】程序运行时间
- 如何查看python的版本号
- Makefile中头文件在依赖关系中作用
- 10006---依赖注入的方式
- 【数据结构】栈的数组实现
- jQuery 常用插件和UI插件 总结笔记
- 【BZOJ2395】【Balkan 2011】Timeismoney 最小乘积生成树
- Juno: user.behaviors 设置: 0.5版本和0.4以下不同?
- 【bug】CSRF Security Error解决办法
- Android ListView适配器中的getView()被复用详解
- 【VBA研究】变量定义的类型和实际赋值类型
- [leetcode] 234.Palindrome Linked List
- Android activity-alias 多入口配置