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];
}
@Override
public Iterator<item> iterator() {
return null;
}
}
Stack数组原理
最新推荐文章于 2021-09-15 23:08:00 发布