概念:
- 线性表顺序存储结构中的元素拥有一个直接前驱元素,和一个直接后继元素;线性表的第一个元素只有直接后继元素,最后一个元素只有直接前驱元素
线性表一旦创建,长度一般都是固定的,这是它的最大容量
线性表中元素个数只能小于等于线性表长度
线性表的基本操作:
public class SeqList {
final int defaultSize=10;
int maxSize;// 顺序表的最大长度
int size;// 线性表的当前长度
static Object[] listArray;//存储线性表的数组
public SeqList(int size) {
initiate(size);
}
public SeqList() {
initiate(defaultSize);
}
//初始化线性表
public void initiate(int sz) {
maxSize=sz;
size=0;
listArray=new Object[sz];
}
//线性表的插入
public void insert(int i,Object obj) throws Exception{
//线性表已经满了
if(size==maxSize) {
throw new Exception("线性表已经满了");
}
if(i==0) {
listArray[i]=obj;
}else {
//插入位置越界
if(i<0||i>maxSize) {
throw new Exception("参数有误");
}else {
for(int j=size;j>=i;j--) {
listArray[j]=listArray[j-1];
}
listArray[i]=obj;
size++;
}
}
}
//线性表的删除
public void delete(int i) throws Exception{
if(size==0) {
throw new Exception();
}
if(i<0||i>maxSize) {
throw new Exception("参数有误");
}else {
for(int j=i;j<=size;j++) {
listArray[j-1]=listArray[j];
}
listArray[size]=null;
size--;
}
}
//获取线性表中的元素
public Object getData(int i)throws Exception{
if(size==0) {
throw new Exception("顺序表为空,无法返回元素");
}
if(i<0||i>maxSize) {
throw new Exception("参数错误");
}
return listArray[i];
}
//获取线性表的长度
public int getSize() {
return listArray.length;
}
//判断线性表是否为空
public boolean isNull() {
if(listArray.length==0) {
return true;
}
return false;
}
public static void main(String[] args) throws Exception {
SeqList list=new SeqList(10);
list.insert(0,0);
list.insert(1,1);
list.insert(2,2);
list.insert(3,3);
list.insert(4,4);
printArr(listArray);
list.delete(3);
System.out.println();
printArr(listArray);
}
public static void printArr(Object[] obj) {
for (Object object : obj) {
System.out.print(object+"-");
}
}
}