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;
}
}
/**
* @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;
}
}