classTestSqlist{//属性private int[] elem;//存放数据的数组private int usersize;//有效数据个数publicTestSqlist(){//不带参数的方法this(10);//一般默认数组长度为10}publicTestSqlist(int size){this.elem =newint[size];this.usersize =0;}//方法public boolean isFull(){if(this.usersize ==this.elem.length){returntrue;}returnfalse;}//先判断是否未满,如果是满的,就进行动态扩容,然后插入,插入时,将要插入位置以后的元素向后移动,从最后一个元素开始移动(int i,i--)
public boolean insert(int pos, int val){if(isFull()){//动态扩容 2倍扩容 Arrays.ccopyOf()this.elem = Arrays.copyOf(this.elem,this.elem.length *2);}if(pos <0|| pos >this.usersize){returnfalse;}else{//数据全部移开,从数组的最后一个元素开始移动for(int i =this.usersize -1; i > pos; i--){this.elem[i +1]=this.elem[i];}//数据全部移开后this.elem[pos]= val;//插入this.usersize++;//有效数据个数增加}returntrue;}
删除
//删除关键字key的值(第一次出现的key) 后面的数组元素进行向前覆盖,然后有效数据的个数减少(usersize--)public boolean delete(int key){//查找是否有关键字key
int index =search(key);// 如果有:开始删除if(index <0){//没有关键字returnfalse;}//有关键字 进行删除 后面的覆盖前面的数据for(int i =0; i <this.usersize -1; i++){this.elem[i]=this.elem[i +1];}this.usersize--;returntrue;}
查找关键字key的下标
//先判断是否为空(有效数字的个数为0 usersize == 0),然后查找,当this.elem[i]的值与key相等,// 就返回下标i,否则就返回-1;public boolean isEmpty(){if(this.usersize ==0){returntrue;}returnfalse;}public int search(int key){if(isEmpty()){return-1;}for(int i =0; i <this.usersize; i++){if(this.elem[i]== key){return i;}}return-1;}
得到任意位置的值
//得到pos位置的值 先判断pos位置 调用isFull()方法public int getPos(int pos){if(pos <0|| pos >this.usersize ||isEmpty()){//return -1;//如果返回-1,可能数组中有-1这个值,所以此刻抛出异常thrownewUnsupportedOperationException("pos位置不合法或者顺序表为空");}for(int i =0; i <this.usersize -1; i++){return i;}returnthis.elem[pos];}publicvoidshow(){for(int i =0; i <this.usersize ; i++){
System.out.print(this.elem[i]+" ");}
System.out.println();}}