class MyStarck {
private int nowIndex;//栈,当前(元素)的下标
private int length=10;//栈的长度,默认为是个数
private int dataCount=0;//栈元素的总数
private Object[] dataSource=new Object[length];//数据存储容器
/**
*入栈函数
*
*/
public void appand(Object data){
if(nowIndex+1>=length){//判断当前的下标是否超出栈的长度
//大
Object[] newDataSource=new Object[dataCount*2];//把数据存储容器的容量提高一倍
//把原数据重新输入到新的容器
for(int i=0;i<length;i++){
newDataSource[i]=dataSource[i];
}
newDataSource[++nowIndex]=data;//把添加进来的数据存储到容器
length=newDataSource.length;//获得新的长度
++dataCount;//增加元素总数
dataSource=newDataSource;//重新回归指引
}else{
//小
if(dataCount==0){
dataSource[nowIndex]=data;//当前的下标+1,然后在数据存储容器中找到当前下标,进行赋值
}else{
dataSource[++nowIndex]=data;//当前的下标+1,然后在数据存储容器中找到当前下标,进行赋值
}
++dataCount;//增加元素总数
}
}
/**
*打印
*
*/
public String toString(){
String temp="";
for(int i=dataCount-1;i>=0;i--){
//第一个
if(i==dataCount-1){
temp="[";
}
temp+=(dataSource[i]+",");
//最后一个
if(i==0){
temp=temp.substring(0,temp.lastIndexOf(","))+"]";
}
}
//temp=dataCount+"";
return temp;
}
/**\
*获得元素
*
*/
public Object get(int index){
if(index>=dataCount || index<0){
return -1;
}else{
return dataSource[index];
}
}
} |
|