顺序表的插入删除

实现ArrayList接口

public interface IArrayList {

    //增/删

    /**
     * 把item插入到线性表前面
     * @param item 要插入的数据
     */
    void pushFront(int item);

    /**
     * 把item插入到线性表的后面
     * @param item 要插入的数据
     */

    void pushBack(int item);

    /**
     * 把item插入到index位置,index位置的数据后移
     * @param item
     * @param index
     */
    void add(int item,int index);

    /**
     * 删除前面的数据
     */
    void popFront();

    /**
     * 删除后面的数据
     */
    void popBack();

    /**
     * 删除index处的数据,index后的数据前移
     * @param index
     */
    void remove(int index);
}

实现顺序表 

public class MyArrayList implements IArrayList {
    private int[] array;//保存数据的空间
    private int size;//保存有效数据个数

    MyArrayList(int capacity){
        this.array= new int[capacity];
        this.size = 0;
    }

顺序表头插

@Override
    public void pushFront(int item) {
        //头插  O(n)
        //将顺序表中已有的数据后移一个,从后往前搬
        for(int i =this.size;i>=1;i--){
            this.array[i] = this.array[i-1];  //数据下标与空间下标的关系 空间[size,1] 数据[size-1,0]
                                              // array[空间]=array[数据]+1;
        }
        this.array[0] = item;
        this.size++;
    }

顺序表尾插

@Override
    public void pushBack(int item) {
        //尾插  时间复杂度:O(1)
        this.array[this.size] =item;
        this.size++;
    }

顺序表指定下标插入

@Override
    public void add(int item, int index) {
        //中间插入
        //i表示要插入数据的下标
        for(int i=this.size-1;i>=index;i--){
            this.array[i+1] = this.array[i];//数据往后移一个,插入item
        }
        this.array[index] = item;
        this.size++;
    }

顺序表头删

@Override
    public void popFront() {
        //头删
        for(int i = 1;i<this.size;i++){
            this.array[i-1] =this.array[i];
        }
        this.size--;
    }

顺序表尾删

@Override
    public void popBack() {
        //尾删   O(1)
        if(this.size == 0){
            throw new Error();
        }
        this.array[--this.size] = 0;
    }

顺序表指定下标删除

@Override
    public void remove(int index) {
        //指定下标删除
        for(int i = index;i<this.size-2;i++){
            this.array[i] = this.array[i+1];
        }
        this.size--;
    }

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值