• 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html
  • 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html

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

极客笔记 Geekerstar 12个月前 (05-06) 294次浏览 已收录 0个评论 扫描二维码
文章目录[隐藏]

包含方法

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

// 查找数组中是否有元素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);
    }
}

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

源码下载

下载地址

导航目录

查看导航
丨极客文库, 版权所有丨如未注明 , 均为原创丨
本网站采用知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议进行授权
转载请注明原文链接:数据结构笔记总结(1.5)添加包含,搜索和删除方法
喜欢 (0)
[247507792@qq.com]
分享 (0)
Geekerstar
关于作者:
本站技术支持

您必须 登录 才能发表评论!

  • 精品技术教程
  • 编程资源分享
  • 问答交流社区
  • 极客文库知识库

客服QQ


QQ:2248886839


工作时间:09:00-23:00