我们用Java语言来实现一个简单的顺序表
在这里面我们用到增删改查
增: 我们有两种方式一种方式是中间插入一个元素
另一种方式是直接在最后一位增加元素
删: 我们也是有两种方式
一种是将全部的元素删除
另一种是删除指定的元素
改:我们就直接将数据进行修改
查:我们可以查看指定元素的下标
也可以查看指定下标的元素
import java.util.Arrays;
public class MyList {
int[]elem;
int Usize = 0;
int USZIENUMBER = 10;
MyList(){
elem = new int[USZIENUMBER];
}
//打印出来检查是否符合预期
public void display(){
if (isEmpty()){
throw new EmptyException("空数组无法删除");
}
for (int i = 0;i < Usize;i++){
System.out.print(elem[i]+" ");
}
}
public int size(){
return this.Usize;
}
//检查是否已满
public boolean isFull(){
return size() >= elem.length;
}
//检查是否为空
public boolean isEmpty(){
return size() == 0;
}
//给数组添加元素
public void add1(int val){
elem[Usize] = val;
Usize++;
}
//给数组插入一个元素
public void add2(int pos,int val) throws PosWrongfulException{
if (isFull()){
System.out.println("已经满了!");
this.elem = Arrays.copyOf(this.elem,this.USZIENUMBER*2);
System.out.println("扩容两倍完毕!");
}
if (pos < 0 || pos >= size()){
throw new PosWrongfulException("数组下标输入有问题");
}
for (int i = Usize;i >= pos;i--){
elem[i+1] = elem[i];
}
elem[pos] = val;
Usize++;
}
//修改数组里面的一个元素
public void set(int pos,int val){
if (pos < 0 || pos >= size()){
throw new PosWrongfulException("数组下标输入有问题");
}
if (isEmpty()){
throw new EmptyException("数组为空无法修改");
}
elem[pos] = val;
}
//查找指定下标的元素
public int findIndex(int pos){
if (isEmpty()){
throw new EmptyException("空数组无法查找");
}
if (pos < 0 || pos >= size()){
throw new PosWrongfulException("输入下标有误!");
}
return elem[pos];
}
//查找指定元素的下标
public int findValue(int val)throws PosWrongfulException{
//我们的目标是找到该元素的下标
if (isEmpty()){
throw new EmptyException("空数组无法查找");
}
for (int i = 0;i < size();i++){
if (elem[i] == val){
return i;
}
}
return -1;
}
//删除数组里面元素
public void remove(int val)throws PosWrongfulException{
if(isEmpty()){
throw new EmptyException("空数组无法删除!");
}
int index = findValue(val);
if (index == -1){
throw new RuntimeException("没有这个元素");
}else {
for (int i = findValue(val);i < size();i++){
elem[i] = elem[i+1];
}
Usize--;
}
}
//删除所有元素
public void clearAll(){
Usize = 0;
}
}