java数组实现栈

来源:互联网 发布:爆炸物品数据上报 编辑:程序博客网 时间:2024/06/04 22:48
public class Demo2 {


/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
     Stack<Integer>   stack=new Stack<Integer>();
     stack.push(1);
     stack.push(2);
     stack.push(3);
     stack.push(4);
     stack.push(5);
     stack.push(6);
     System.out.println(stack.size);
     stack.pop();
     System.out.println(stack.size);
     System.out.println(stack.peek());
     stack.clear();
     System.out.println(stack.size);
     System.out.println(stack.peek());
}
}
class Stack<T>{
//数组的容量
int cal=5;
Object[] arr=new Object[cal];
//栈的大小
int size=0;
private  int top=0;
//取出栈顶元素
public T peek(){
if(isE()){
return null;
}else{
return (T) arr[top-1];
}
}
//出栈
public void pop(){
arr[top-1]=null;
top--;
size--;
}

//入栈
public void push(Object num){
if(size<cal){
arr[top]=num;
top++;
size++;

}else{
//数组扩容
resize();
push(num);
}

}
//判断栈是否为空
public boolean isE(){
return size==0;
}
//将栈清空
public void clear(){
//Arrays.fill(this.arr, null);
arr=null;
size=0;
top=0;
}
//输出栈的大小
public int size(){
return size;
}
//数组扩容
public void resize(){
cal=cal*3/2-1;
Object[] arr1=new Object[cal];

System.arraycopy(this.arr, 0,arr1, 0, arr.length);
  this.arr=arr1;
}
}
0 0