package 顺序表;
public class SqList
{
public Object[] listElem;//线性表存储空间
private int lengths;//线性表的长度
//顺序表构造函数,构造有个长度为maxSize的线性表
public SqList(int maxSize){
lengths=0;
listElem = new Object[maxSize];
}
//置空操作
public void clear(){
lengths=0;
}
//判断长度是否为0,0即是空表
public boolean isEmpty(){
if(lengths>0){
System.out.println("非空");
}
return lengths==0;
}
//取表长度,返回lengths的长度
public int length(){
return lengths;
}
//取表元素
public Object get(int i)throws Exception{
//如果不合法报异常
if(i>0 || i>lengths-1){
throw new Exception("第"+i+"个元素不存在");
}
return listElem[i];
}
//插入操作
public void insert(int i,Object x) throws Exception{
if(lengths==listElem.length){
throw new Exception("顺序表已满");
}
if(i<0 || i>lengths){
throw new Exception("插入位置不合法");
}
//从尾部往前扫
for(int j=lengths;j>i;j--){
listElem[j]=listElem[j-1];
listElem[i]=x;
lengths++;
}
}
//删除操作
public void remove(int i)throws Exception{
if(i<0 || i>lengths-1){
throw new Exception("删除位置不合法");
}
//下标移动要出删除的i处
for(int j=i;j<lengths-1;j++){
listElem[j]=listElem[j++];
lengths--;
}
}
//查找操作
public int Indexof(Object x){
int j=0;
//遍历查找
while(j<lengths && !listElem[j].equals(x)){
j++;
}
if(j<lengths){
return j;
}else{
return -1;
}
}
//显示操作
public void display(){
//遍历线性表
for(int i=0;i<lengths;i++){
System.out.println(listElem[i]);
}
}
public static void main(String[] args) throws Exception {
SqList sq=new SqList(20);
sq.insert(1,1);
sq.insert(2,8);
sq.insert(3,9);
sq.insert(4,8);
sq.insert(5,10);
sq.display();
}
}
我搞不懂了怎么插入异常,我明明符号条件,请各位给我看下
相关分类