二、线性表(1)
1、线性表的定义
线性表是由n个类型相同的数据元素组成的有限序列,n是线性表的元素个数,也称线性表的的长度;若n=0,则称空表,线性表使用序号确定数据元素在线性表的逻辑次序,即表示数据元素之间的顺序关系;
2、线性表的顺序存储结构
(1)数组:存储具有相同数据类型的元素集合,是一种构造数据类型。
a[i]的地址计算:
第i个元素的地址a[i]地址 = 数组a的首地址 + 元素字节数*i ;
数组一旦占用一片存储空间,其地址和容量就是确定的,不可更改;
(2)顺序表:线性表的顺序存储结构称为顺序表,它使用一维数组一次存放线性表的数据元素;
(3)顺序表的声明,操作;声明SeqList顺序表类,有两个保护权限的成员变量element和n。element数组存放数据元素,n表示顺序表元素个数,约定数据元素不能是空对象(null),Java语言约定文件名同类名;
package SeqList_T;
public class SeqList {
protected int n;
protected int[] element;
private static final int MIN_CA = 16;
public SeqList(int length){ //构造空表,length指定容量;
if (length < MIN_CA){
length = MIN_CA;
this.element = new int[length]; //申请元素空间,元素为null;
this.n = 0;
}
}
public SeqList(){ //创建默认容量的空表,构造方法重载;
this(MIN_CA);
}
public SeqList(int[] values){ //使用数组构造顺序表,由values提供数据元素
this(values.length*2);
for (int i = 0; i < values.length; i++)
this.element[this.n++] = values[i];
}
public boolean isEmpty(){ // 判空
return this.n == 0;
}
public int size(){ //返回元素个数
return this.n;
}
public int get(int i){ //返回第i个元素;
if (i > 0 && i < this.n)
return this.element[i];
return -1;
}
public void set(int i,int x){
if (i > 0 && i < this.n)
this.element[i] = x;
else System.out.println("下标越界!");
}
}