Stack的实现

 1 public class MyStack<AnyType> {
 2     private AnyType [] theItems;
 3     private final int DEFAULT_CAPACITY = 100;
 4     private int top;
 5 
 6 
 7     public MyStack(){ //构造函数,生成空表
 8         clear();
 9     }
10 
11     public void clear(){ //归为默认(清空)
12         top = 0;
13         ensureCapacity(DEFAULT_CAPACITY);
14     }
15 
16     public void ensureCapacity(int newCapacity ){ //重置表的容量
17         AnyType [] oldItems = theItems;
18         theItems = (AnyType []) new Object[newCapacity];//****重新分配空间 注意使用强制转换的方式进行定义
19         for (int i = 0 ; i < top; i++){
20             theItems[i] = oldItems[i];
21         }
22     }
23 
24     public boolean isEmpty(){  //判断是否为空
25         return top == 0;
26     }
27 
28     public boolean push( AnyType newVal){//末尾添加元素
29         if(theItems.length == top)
30             ensureCapacity(top * 2 + 1);
31         theItems[top++] = newVal;
32         return true;
33     }
34 
35     public AnyType pop(){
36         if(top == 0)
37             throw new NoSuchElementException();
38         return theItems[--top];
39     }
40 }
原文地址:https://www.cnblogs.com/sunnysola/p/4829463.html