您的位置:首页 > 编程语言 > Java开发

栈的数组实现(动态调整数组大小) JAVA版本

2015-06-09 16:16 253 查看
每项操作的用时都与集合大小无关
空间需求总是不超过集合大小乘以一个常数

public class MyStack<T> implements Iterable<T>{
private T[] items = (T[]) new Object[1];  //栈元素
private int N = 0;//元素数量

public boolean isEmpty(){
return N == 0;
}

public int size(){
return N;
}

public void reSize(int max){
T[] temp = items;
items = (T[]) new Object[max];
for(int i = 0 ;i < N ; i++){
items[i] = temp[i];
}
}

public void push(T item){
if(N == items.length)
reSize(2 * N);
items[N++] = item;
}

public T pop(){
T item =  items[--N];
items
= null;
if(N > 0 && N == items.length/4)
reSize(items.length/2);
return item;
}

@Override
public Iterator<T> iterator() {
// TODO Auto-generated method stub
return new StackIterator();
}

class StackIterator implements Iterator<T>{
private int  iteNum = N;
@Override
public boolean hasNext() {
// TODO Auto-generated method stub
return iteNum > 0;
}

@Override
public T next() {
// TODO Auto-generated method stub
return items[--iteNum];
}

}

}


代码实现参考《算法》第四版
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: