放在面试文件夹中的都是我在网上看到的各种学习资料,然后自己记录下来的,很多是非原创的,放在CSDN只是想给各位想要面试的人一个小小的汇总。大家一起努力努力
这是用Java数组来实现堆栈
public class myStack{
private int[] storge;//存放栈中元素的数组
private int capacity;//栈中的容量
private int count;//栈中的元素数量
private static final int GROW_FACTOR = 2;
//TODO:不带初始容量的构造方法。默认容量为8
public myStack(){
this.capacity=8;
this.storge=new int[8];
this.count=0;
}
//TODO:带初始容量的构造方法
public myStack(int initialCapacity){
if(initialCapacity<1)
throw new IllegalArgumentException("capacity is too small");
this.capacity=initialCapacity;
this.storge=new int[initialCapacity];
this.count=0;
}
//TODO:确保容量大小,就是如果栈满了,要扩充容量
public ensureCapacity(){
int newCapacity=capacity*GROW_FACTOR;//两倍扩充容量
this.capacity=newCapacity;
this.storge=Arrays.copyOf(this.storge,newCapacity);
}
//TODO:入栈,要考虑元素是否满了
public void pop(int value){
if(count==capacity)
ensureCapacity();
storge[count++]=value;
}
//TODO:返回栈顶元素并出栈,要考虑是否为空栈
public int push(){
if(count==0)
throw new IllegalArgumentException("the stack is empty");
this.count--;
return storge[count];
}
//TODO:返回栈顶元素不出栈
public int peek(){
if(count==0){
throw new IllegalArgumentException("the stack is empty");
}
else{
return storge[count-1];
}
}
//TODO:判断栈是否为空
public boolean isEmppty(){
return count==0;
}
//TODO:返回栈中元素的个数
public int size(){
return count;
}
}