目录
顺序表是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素、使得线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中,即通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系,采用顺序存储结构的线性表通常称为顺序表。顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中。
1、基本结构
public class MyArrayList {
public int [] elem; //数组
public int usedSize; //数组的有效个数
public static final int capacity = 10; //初始容量
public MyArrayList(){
this.elem = new int[capacity];
this.usedSize = 0;
}
}
2、在pos位置新增元素
public void add(int pos,int data){
if (isFull()){
this.elem =
Arrays.copyOf(this.elem,2*this.elem.length);
}
if (pos<0 || pos>this.usedSize){throw new RuntimeException("pos位置不合法");}
//挪数据
for (int i = this.usedSize-1; i >=pos ; i--) {
this.elem[i+1] = this.elem[i];
}
this.elem[pos] = data;
this.usedSize++;
}
3、打印顺序表
public void display(){
for (int i = 0; i < this.usedSize; i++) {
System.out.print(this.elem[i] + " ");
}
System.out.println();
}
4、查找某个元素对应得位置
public int search(int toFind){
for (int i = 0; i < this.usedSize; i++) {
if (this.elem[i] == toFind){
return i;
}
}
return -1;
}
5、获取pos 位置的元素
public int getPos(int pos){
//判断是否为空
if (isEmpty()){
//return -1;
throw new RuntimeException("顺序表为空");
}
//判断是否合法
if (pos < 0 ||pos >= this.usedSize){throw new RuntimeException("pos位置不合法");}
return this.elem[pos];
}
6、获取顺序表长度
public int size(){return this.usedSize;}
7、删除第一次出现的关键字toRemove
public void remove(int toRemove){
int index = search(toRemove);
if (index == -1){System.out.println("为找到要删除的数字");return;}
for (int i = index; i < this.usedSize - 1; i++) {
this.elem[i] =this.elem[i+1];
}
this.usedSize--;
}
8、清空顺序表
public void clear(){this.usedSize=0;}
其中为了方法的重复使用还有两个私有的方法:
1、判断数组是否装满
private boolean isFull(){
if (this.usedSize == this.elem.length){
return true;
}
return false;
}
2、判断是否为空
private boolean isEmpty(){
return this.usedSize ==0;
}
最终测试代码及其效果: