顺序表的增删查改

 

目录

一、给pos位置新增一个元素(增)

思路:

1、创建一个顺序表

2、判断插入的位置是否合法

3、判断是否已满

4、给pos位置插入元素

较完整代码:

二、扩容函数(改)

三、查找是否包含某个元素(查)

思路:

1、判断是否为空

2、遍历开始查找

四、删除第一次出现的关键字

思路:

打印顺序表

清空顺序表


一、给pos位置新增一个元素(增)

 

思路:

①创建一个顺序表

②判断插入的位置是否合法

③判断表已满的情况

④合法且不为空,给pos位置插入

1、创建一个顺序表

public class MyArrayList {

    public int[] elem;
    public int usedSize;
    public MyArrayList(){//构造方法
        this.elem= new int[10];//创建一个长度为10的数组
    }
}

2、判断插入的位置是否合法

        插入位置的前面一定要有数据

  if(pos<0||pos>this.usedSize){//不能在0元素前面或者最后一个元素的后面的后面插入
            System.out.println("插入的位置不合法!");
            return;
        }

3、判断是否已满

public boolean isFull(){
        if (this.usedSize==this.elem.length){//里面实际长度等于数字的长度
            System.out.println("元素已满");//无法在插入
            return true;
        }
        return false;
    }
}

4、给pos位置插入元素

public void add(int pos,int data){
        //移动元素
        for(int i=usedSize-1;i>=pos;i--){
            this.elem[i+1]=this.elem[i];
        }
        elem[pos]=data;
        usedSize++;
    }

较完整代码:

public void add(int pos,int data){
        //是否列表已满
        if(isFull()){
            System.out.println("顺序表已满");
            return;
        }
        //pos是否合法
        if (pos<0||pos>usedSize){
            System.out.println("插入的位置不合法!");
            return;
        }
        //移动元素
        for(int i=usedSize-1;i>=pos;i--){//从最后一个元素开始往后移动元素
            this.elem[i+1]=this.elem[i];//把第i个位置的元素放到了第i+1de 位置
        }
        elem[pos]=data;//把要插入的数据放到pos位置
        usedSize++;
    }

二、扩容函数(改)

//扩容函数
        if(isFull()){
        this.elem= Arrays.copyOf(this.elem,2*this.elem.length);//一般扩大为原来的2倍
    }

三、查找是否包含某个元素(查)

思路:

①先判断是否为空

②不为空从下标0元素开始遍历

1、判断是否为空

public boolean isEmpty(){
       return this.usedSize==0;
}

2、遍历开始查找

public boolean contains(int toFind){
       if (isEmpty()){
           System.out.println("列表为空");
           return false;
       }
        for(int i=0;i<this.usedSize;i++){
            if (this.elem[i]==toFind){
                return true;
            }
            return false;
        }
}

四、删除第一次出现的关键字(删)

思路:

①:判断是否为空(和上面判断为空一样)

②:找到要删除元素的下标

//删除第一次出现的关键字key
    public void remove(int toRemove){//判断是否为空
        if (isEmpty()){
            return;
        }
    int index=search(toRemove);
        if (index==-1){
            System.out.println("没有你要删除的元素");
            return;
        }
        for(int i=index;i<this.usedSize;i++){
            this.elem[i]=this.elem[i+1];
        }
        this.usedSize--;
    }   
    

打印顺序表

//打印顺序表
    public void display(){
        for (int i=0;i<usedSize;i--){
            System.out.println(this.elem[i]+" ");
        }
    }

清空顺序表

 public void clear(){
        //第一种方法简单粗暴
        this.usedSize=0;
        //第二种方法
        for (int i=0;i<this.usedSize-1;i++){
            this.elem[i]=0;//this.elem[i]=null;地址引用置为空
        }
        this.usedSize=0;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值