数据结构笔记总结(1.5)添加包含,搜索和删除方法

包含方法

我们需要查找在这些元素中是否包含某个元素,这种情况下,我们就需要设置一个接口,代码如下:

// 查找数组中是否有元素e
public boolean contains(int e){
    for(int i = 0 ; i < size ; i ++){
        if(data[i] == e)
            return true;
    }
    return false;
}

寻找方法

在有些时候,可能我们不仅仅想查看数组中是否包含某个元素,还想具体看一下如果存在这个元素,这个元素对应的索引是多少?那么我们就可以编写一个find方法,代码如下:

// 查找数组中元素e所在的索引,如果不存在元素e,则返回-1
public int find(int e){
    for(int i = 0 ; i < size ; i ++){
        if(data[i] == e)
            return i;
    }
    return -1;
}

如何从数组中删除元素

如果我们想从下面的数组中删除索引为1的元素,该怎么做呢?

其实删除就是插入的一个反向过程,我们把要删除的这个索引之后的所有元素都向左移,将待删除的元素给挤走就好了,那具体该怎么做呢?

假设现在要删除索引为1的元素,将索引为2的元素移动(赋值)到索引为1的元素中

然后让索引为2的元素等于索引为3的元素

同理,100也赋值到索引为3的位置,此时data[5]已经没有元素了

最后,我们数组中已经少了一个元素,此时size–,指向第一个没有元素的位置。

代码演示

// 从数组中删除index位置的元素, 返回删除的元素
public int remove(int index){
    if(index < 0 || index >= size)
        throw new IllegalArgumentException("Remove failed. Index is illegal.");

    int ret = data[index];
    for(int i = index + 1 ; i < size ; i ++)
        data[i - 1] = data[i];
    size --;
    return ret;
}

完成了这个remove方法后,我们还可以接着创建一些快捷的方法。

// 从数组中删除第一个元素, 返回删除的元素
public int removeFirst(){
    return remove(0);
}

// 从数组中删除最后一个元素, 返回删除的元素
public int removeLast(){
    return remove(size - 1);
}

// 从数组中删除元素e
public void removeElement(int e){
    int index = find(e);
    if(index != -1)
        remove(index);
}

测试一下本小节内容

简单测试一下上面实现的remove方式

public class Main {

    public static void main(String[] args) {

        Array arr = new Array(20);
        for(int i = 0 ; i < 10 ; i ++)
            arr.addLast(i);
        System.out.println(arr);

        arr.add(1, 100);
        System.out.println(arr);

        arr.addFirst(-1);
        System.out.println(arr);
        // [-1, 0, 100, 1, 2, 3, 4, 5, 6, 7, 8, 9]

        arr.remove(2);
        System.out.println(arr);

        arr.removeElement(4);
        System.out.println(arr);

        arr.removeFirst();
        System.out.println(arr);
    }
}

运行程序,请观察并分析结果:

源码下载

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

导航目录

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

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

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

立即加入 了解更多