1. 顺序表接口实现与方法
1. 接口实现
public class SeqList {
private int[] array;
public static final int Current_Max=5; //当前数组元素最大值
private int UsedSize; //记录当前顺序表中有多少个有效的数据
public SeqList() {
this.array = new int[Current_Max];
}
}
2. 方法
//新增元素,默认在数组最后新增
public void add(int data) { }
// 在 pos 位置新增元素
public void add(int pos, int data) { }
// 判定是否包含某个元素
public boolean contains(int toFind) { return true, }
// 查找某个元素对应的位置
public int indexOf(int toFind) { return -1; }
// 获取 pos 位置的元素
public int get(int pos) { return -1; }
// 给 pos 位置的元素设为 value
public void set(int pos, int value){ }
//删除第一次出现的关键字key
public void remove(int toRemove){}
// 获取顺序表长度
public int size() { return 0; }
// 清空顺序表
public void clear() {}
// 打印顺序表,注意:该方法并不是顺序表中的方法,为了方便看试结果给出的
public void display(){}
2. 方法实现
2.1 在pos位置新增元素
!!注意!!
所插入的数据前面一定要存在元素,如示例56不可插入在4下标【不连续】
!!在数据结构中插入一个元素时,该元素一定要有前驱!!
当pos向已有元素的下标新增元素时,需要将原元素“挪开” 【挪开不是删除!】
34的位置-->usedSize-1
public void add(int pos,int data) {
//判断位置是否合法,要符合顺序表的逻辑连续
if(pos<0||pos>UsedSize){
throw new PosOutBoundsException("pos位置不合法");
}
//判满
if(isFull()){
array= Arrays.copyOf(array,2*array.length);//扩容
}
//挪数据
for(int i=UsedSize-1;i>=pos;i--)
{
array[i+1]=array[i];
}
//存数据
array[pos]=data;
UsedSize++;
}
2.2 给pos位置元素设为value【更新】
public void set(int pos,int value){
if(!checkPos(pos)){
throw new PosOutBoundsException("获取数据时,位置不合法!");
}
array[pos]=value;
}
2.2.1判断pos是否合法
private boolean checkPos(int pos){
if(pos<0||pos>=UsedSize){
return false;
}
return true;
}
自定义报错
public class PosOutBoundsException extends RuntimeException {
public PosOutBoundsException() {
}
public PosOutBoundsException(String message) {
super(message);
}
}
2.3 删除第一次出现的关键字key
public void remove(int toRemove){
if(isEmety()){
return;
}
int index=indexOf(toRemove);//找到要删除的数据下标
if(index==-1){
return;
}
for(int i=index;i>UsedSize-1;i++){
array[i]=array[i+1];
}
UsedSize--;
}
2.3.1判空
public boolean isEmety(){
return UsedSize==0;
}
2.3.2找到要删除的数据下标
public int indexOf(int toFind){
for(int i=0;i<SeqList.Current_Max;i++)
{
if(toFind==array[i]){
return i;
}
}
return -1;
}
2.4 获取顺序表长度
public int size(){
return usedSize;
}
2.5 清空顺序表
public void clear(){
UsedSize=0;
}