顺序表
1.什么是顺序表
顺序表是线性表的一种。
线性表的定义为:一种可以在任意位置进行插入和删除数据元素操作的,由n个相同类型数据元素 a 0 , a 1 , a 2 , ⋯ , a n − 1 a_{0},a_{1},a_{2},\cdots,a_{n-1} a0,a1,a2,⋯,an−1组成的线性结构。其数据元素满足除第一个元素和最后一个元素外,每个元素只有一个直接前驱和直接后继,第一个元素没有前驱元素,最后一个元素没有后继元素。
顺序表通常基于数组来实现,数组将顺序表的数据元素存储在一块连续地址空间的内存单元中。这样逻辑上相邻的元素在物理存储地址上也相邻,数据元素见逻辑上的前驱后继关系表现在数据元素存储单元的前后位置关系上。
2.顺序表的存储结构
其中myArray为构造顺序表所依托的数组结构,maxSize为数组长度,也即顺序表的最大表长,而size为顺序表的实际表长。
3.顺序表类成员以及方法
通常对于一个数据结构最基本的操作即:插入,删除,修改,查找。 因而将顺序表成员及方法定义如下:
int maxSize; //表最大长度
int size; //表实际元素个数
Object[] MyArray; //表依托的数组
public int size(); //求表中元素个数
public boolean isEmpty(); //判断表是否为空
public void insert(); //插入元素
public Objcet delete(int i) throws Exception; //删除元素
public void setData(int i) throws Exception; //修改元素
public Object getData(int i) throws Exception; //查找元素
4.顺序表基本功能实现
public class myArrayList{
private static final int defaultSize = 10; //默认长度
private int maxSize;
private int size;
private Object[] myArray;
public myArrayList(){
maxSize = defaultSize;
size = 0;
myArray = new Object[defaultSize];
}
public myArrayList(int size){
maxSize = size;
this.size = 0;
myArray = new Object[size];
}
public int size() {
return size;
}
public boolean isEmpty() {
return size == 0;
}
public void insert(int i, Object obj) throws Exception{
if (size == maxSize){
throw new Exception("full");
}
if (i<0||i>size){
throw new Exception("parameter error");
}
for (int j = size;j > i;j--){
//插入位置后面的元素,从末尾开始依次往后移一个单位
myArray[j] = myArray