数据结构笔记总结(1.3)向数组中添加元素

向数组中添加元素原理解析

size这个变量其实就是指向数组中第一个没有元素的位置,我们向数组末尾添加元素其实就是相当于向size这个位置添加元素。

初始的时候,数组尾空,首先向数组中添加一个66,size++

同理,我们再添加一个元素88,此时size=1,向数组末尾添加一个元素,让data[1]=88,之后size++。

向指定位置添加元素

把77插入索引为1的位置

因此需要把当前索引为1的元素以及之后所有的元素向后挪一个位置,但是不能把88直接往后挪一个位置,因为这样就把99给覆盖了,所以我们应该从后往前挪。先把100往后挪一个位置。

再把99往后挪一个位置

再把88往后挪一位

此时就可以插入元素77到data[1]了

当然,完成以上过程后,size需要加1,保证size指向下一个没有元素的位置。

代码演示

继续编码,实现以上的过程,编写向所有元素后添加一个新元素的方法和在第index个位置插入一个元素e的方法。

public class Array {

    private int[] data;
    private int size;

    // 构造函数,传入数组的容量capacity构造Array
    public Array(int capacity){
        data = new int[capacity];
        size = 0;
    }

    // 无参数的构造函数,默认数组的容量capacity=10
    public Array(){
        this(10);
    }

    // 获取数组的容量
    public int getCapacity(){
        return data.length;
    }

    // 获取数组中的元素个数
    public int getSize(){
        return size;
    }

    // 返回数组是否为空
    public boolean isEmpty(){
        return size == 0;
    }

    // 向所有元素后添加一个新元素
    public void addLast(int e){

//        if(size == data.length)
//            throw new IllegalArgumentException("AddLast failed. Array is full.");
//
//        data[size] = e;
//        size ++;
        add(size, e);
    }

    // 在所有元素前添加一个新元素
    public void addFirst(int e){
        add(0, e);
    }

    // 在index索引的位置插入一个新元素e
    public void add(int index, int e){

        if(size == data.length)
            throw new IllegalArgumentException("Add failed. Array is full.");

        if(index < 0 || index > size)
            throw new IllegalArgumentException("Add failed. Require index >= 0 and index <= size."); for(int i = size - 1; i >= index ; i --)
            data[i + 1] = data[i];

        data[index] = e;

        size ++;
    }

}

源码下载

[dm href=’https://www.jikewenku.com/product/1487.html’]下载地址[/dm]

导航目录

[dm href=’https://www.jikewenku.com/geeknote/2241.html’]查看导航[/dm]

本站所有文章均由网友分享,仅用于参考学习用,请勿直接转载,如有侵权,请联系网站客服删除相关文章。若由于商用引起版权纠纷,一切责任均由使用者承担
极客文库 » 数据结构笔记总结(1.3)向数组中添加元素

Leave a Reply

欢迎加入「极客文库」,成为原创作者从这里开始!

立即加入 了解更多