今天看了下数据结构java描述的开头,拿代码理解一下,看起来很简单,但是思路很重要。
public class SeqList implements List{
@Override
public List subList(int fromIndex, int toIndex) {
// TODO Auto-generated method stub
return null;
}
final int defaultSize = 10;
int maxSize;
int size;
Object[]listArray;
public SeqList(){
initiate(defaultSize);
}
public SeqList(int size){
initiate(size);
}
//构造方法初始化,默认值为10,同时创建10个对象,size默认为0
private void initiate(int s){
maxSize=s;
size=0;
listArray=new Object[s];
}
//插入操作,传入位置和对象,
public void insert(int i,Object obj)throws Exception{
//如果顺序表满了酒抛异常,简单for循环
if(size==maxSize){
throw new Exception("顺序表已经满无法插入!");
}
//传入的参数不能小于零或者不能比列表长度长
if(i<0||i>size){
throw new Exception("参数错误!");
}
//定义变量初始值为0,根据位置来调整移动的次数,插入都往后面移动,然后进行插入。
for(int j=size;j>i;j--){
listArray[j]=listArray[j-1];
}
listArray[i]=obj;
size++;
}
//删除和插入类似,移除的时候总体减少了一,所以移动的次数为总体减一
public Object delete(int i) throws Exception{
if(size==0){
throw new Exception("顺序表已经空了,无法删除!");
}
if(i<0||i>size-1){
throw new Exception("参数错误!");
}
Object it = listArray[i];
for(int j=i;j<size-1;j++){
listArray[j] = listArray[j+1];
}
//总体的size每次都减一
size--;
return it;
}
//输出列表
public Object getData(int i)throws Exception{
if(i<0||i>=size){
throw new Exception("参数错误!");
}
return listArray[i];
}
public int size(){
return size;
}
public boolean isEmpty(){
return size==0;
}
//批量删除,遍历列表,逐个删除
public int MoreDataDelete(SeqList L,Object x) throws Exception{
int i,j;
int tag = 0;
for(i=0;i<L.size();i++){
if(x.equals(i)){
L.delete(i);
i--;
tag = 1;
}
}
return tag;
}
}