文章目录
前言
JavaSE初阶段的学习已步入了尾声,我即将迈进新的篇章————数据结构的学习,今天我将和大家分享一种数据结构线性表中的顺序表。
一、顺序表
顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。
1.myArrayList的实现
1.1 IList接口
其中存放我们需要实现的方法
例如:
interface Ilist {
// 新增元素,默认在数组最后新增
void add(int data) ;
// 在 pos 位置新增元素
void add(int pos, int data) ;
// 判定是否包含某个元素
boolean contains(int toFind);
// 查找某个元素对应的位置
int indexOf(int toFind);
// 获取 pos 位置的元素
int get(int pos) ;
// 给 pos 位置的元素设为 value
void set(int pos, int value) ;
//删除第一次出现的关键字key
void remove(int toRemove) ;
// 获取顺序表长度
int size();
// 清空顺序表
void clear() ;
// 打印顺序表,注意:该方法并不是顺序表中的方法,为了方便看测试结果给出的
void display() ;
}
1.2myArraylist类
实现具体的方法
myArraylist类的基本属性如下:
public class MyArrayList implements Ilist{
public int[] elem;
public int usedSize;
public static final int DEFAULT_CAPACITY=5;//初始的容量
public MyArrayList() {
elem=new int[DEFAULT_CAPACITY];
}
1.2.1 add方法
添加顺序表中的元素
1.尾插法
2.任意位置添加
public void add(int data) {
//判断顺序表是否满了
if(isFull()){
elem= Arrays.copyOf(elem,2*elem.length);
}
elem[usedSize]=data;
usedSize++;
}
public boolean isFull(){
return usedSize==elem.length;
}
private void checkPosOfAdd (int pos){
if (pos<0&&pos>usedSize){
throw new PosException("插入位置不合法!");
}
}
public void add(int pos, int data) {
checkPosOfAdd(pos);
if(isFull()){
elem= Arrays.copyOf(elem,2*elem.length);
}
for (int i = usedSize-1; i >=pos ; i--) {
elem[i+1]=elem[i];
}
elem[pos]=data;
usedSize++;
}
1.2.2 contains方法
判定是否包含某个元素
public boolean contains(int toFind) {
for(int i=0;i<usedSize;i++){
if(toFind==elem[i])