什么是顺序表
顺序表实际上就是一个数组,但是我们将这个数组的属性和使用方法都放在一个类里面,在我们需要使用时,只需要new一个对象来使用这个类就可以。
一、顺序表中插入数据的实现
判断插入位置是否合法
判断顺序表是否满
插入数据(在插入数据时,需要将插入位置后面的数据向后移动一位)
public class MyArrayList {
int[] array;//顺序表的内容存储在一个数组中
int useSize;//有效数据个数
public MyArrayList(){
this.array=new int[10];//在创建一个对象时,创建一个大小为10的数组
}
public void display(){//显示当前顺序表的内容
for (int i = 0; i < this.useSize; i++) {
System.out.print(this.array[i]+" ");
}
System.out.println();
}
public void add(int pos,int data){//插入一个数据
if(pos <0||pos>this.useSize){//判断插入位置是否合法
System.out.println("插入位置非法");
return;
}
if(useSize==this.array.length){//判断顺序表是否满
this.array=Arrays.copyOf(this.array,this.array.length*2);
}
for (int i = useSize-1; i >= pos; i--) {//插入数据
this.array[i+1]=this.array[i];
}
this.array[pos]=data;
this.useSize++;
}
}
二、顺序表中删除数据
public void del(int pos){//删除某个位置的数据
if (pos<0||pos>this.useSize-1){//判断插入位置是否合法
System.out.println("位置不合法");
return;
}
if (this.useSize==0){
System.out.println("顺序表为空");
return;
}
for (int i = pos; i <useSize ; i++) {//删除数据
this.array[i]=this.array[i+1];
}
useSize--;
}
三、改变顺序表某个位置的数据
public void change(int pos,int value){
if (pos<0||pos>this.useSize-1){//判断位置是否合法
System.out.println("位置不合法");
return;
}
if (this.useSize==0) { //判断是否为空表
System.out.println("顺序表为空");
return;
}
this.array[pos]=value;
}
}
四、查找数据
public void find(int value){
if (this.useSize==0) { //判断是否为空表
System.out.println("顺序表为空");
return;
}
for (int i = 0; i < useSize; i++) {
if(this.array[i]==value){
System.out.println(i);
return;
}
}
System.out.println("没有这个数据");
}
五、清空数据
只需要使useSize等于0即可
public void clear(){
useSize=0;
}
}
当然也有特殊情况,当顺序表中存储的是引用类型时,只是单一的将useSize改为0无法清空顺序表,因为每一个引用都会指向一个对象,引用不删除,会一直占用空间
public void clear(){
useSize=0;
/* for (int i = 0; i < this.useSize; i++) {
this.array[i]=null;
}*/
}
被注释掉的内容就是引用类型的清空顺序表
//还在学习中,有任何错误,望指正。