Stack数组原理

来源:互联网 发布:合肥淘宝客服招聘兼职 编辑:程序博客网 时间:2024/05/21 06:35
package Stack;import java.util.Iterator;public class LIFOStack<item> implements Iterable<item>{private item[] it ;private int N = 0;public boolean  isEmpty() {return N==0;}//该栈是否为空public int size(){return N;}//返回栈的长度//出栈,去掉最后一个,对象游丝,当栈的长度小于栈容量的四分之一时,让栈容量减少一半(1/4是为了避免抖动,反复)public item pop(){if(N > 0 && N == it.length/4){resize(it.length/2);}return it[--N] ;}//将容量翻倍public void resize(int max){item[] big = (item[])new Object[max];for(int i = 0 ; i < it.length ; i++){big[i] = it[i];} it = big;}// 将元素存入栈中 当栈的大小等于最大容量时 翻倍扩容public void push(item item){//用栈的长度和栈的容量比较,如果相等就copy一个新数组翻倍容量if(N == this.it.length){resize(it.length*2);}it[N++] = item;}/* *创建一个容量为cap的空栈 *参数int cap *构造方法 */public LIFOStack(int cap){it = (item[])new Object[cap];}@Overridepublic Iterator<item> iterator() {return null;}}

原创粉丝点击