当前位置: 首页 > article >正文

Java线性表(顺序表)

顺序表作为线性表的一种,首先它是有顺序的连续的,为什么这么说呢?因为它是通过数组来存储数据的,数组的特性就是它的特性。

顺序表优缺点

1.顺序表不适合做插入,删除数据,时间复杂度为O(n)。
2.顺序表相比起链表来说更适合做查找。

实现自己的顺序表

首先线性表要通过数组来存储数据,其次呢,为了能够得知数组现在的有效数据是多少,我们得设置一个变量来记录,然后呢,既然是数组就得有个默认的起始空间。这样我们的工作就完成了。

class MyarrayList{
    private int[] elem;
    private  int uselength;

    private final int defaultsize = 20;
}

之后我们得给我们的数据初始化,这里我们在构造方法中来实现。

public MyarrayList() {
        this.elem = new int[defaultsize];
    }
    public MyarrayList(int size){
        this.elem = new int[size];
    }

在这里提供了两种选择,一种是,默认的数组大小,一种是自己设定的大小。

接下来就可以实现方法了,我们要先进行增删查改,首先我们得先解决一下如果空间不够的话,我们得申请一个足够的空间,一般是之前空间的二倍。

1.增添数据

 这里我们写了两种方法,都是增添元素只是一个是尾添,一个是在指定位置添加。后者需要让指定位置的数据往后移动。

在增添的开始我们先要判断空间够不够用,如果不够则增添为二倍,在方法二中我们还得判断pos是否合法。尤其要注意的是因为我们添加了数据,所以我们得将用来记录有效数据的变量进行加一处理。 

2.删除数据

在删除数据前我们得先看看数据是否合法,就是数据是否存在,所以我们就实现了方法一,包含方法 ,之后我们就会找到该数据,然后进行覆盖操作。

3,查

4,找

这里的查找有两种一种是找位置,另一种是找对应位置的数据,在参数列表有位置这样的信息时,第一时间就是看是否合法。然后进行操作。

 其他方法

其他方法不是基于前面几个操作衍生的,就是一些简单的打印。

然我们回到main方法

我们在完成程序后都得先测试一下,来避免一些不必要的错误。 

如果我们给一个字符串welcome to 和 另一个字符串 come 如何利用顺序表输出字符一中没有字符串二的字符呢?

例如:输出的结果应该是wlt


http://www.kler.cn/a/592281.html

相关文章:

  • 算法刷题记录——LeetCode篇(2) [第101~200题](持续更新)
  • 【MySQL数据库】存储过程与自定义函数(含: SQL变量、分支语句、循环语句 和 游标、异常处理 等内容)
  • 美团Leaf分布式ID生成器使用教程:号段模式与Snowflake模式详解
  • 友思特应用 | 行业首创:基于深度学习视觉平台的AI驱动轮胎检测自动化
  • 基于微信小程序与SSM框架的高校课堂教学管理系统的设计与实现
  • 信息学奥赛一本通 1831:【03NOIP提高组】神经网络 | 洛谷 P1038 [NOIP 2003 提高组] 神经网络
  • 【前每日一题DAY-1】JS为什么能有异步任务?
  • 如何基于Gone编写一个Goner对接Apollo配置中心(下)—— 对组件进行单元测试
  • 破解验证码新利器:基于百度OCR与captcha-killer-modified插件的免费调用教程
  • 在处理欧拉函数时如何使用逆元
  • PHP转GO Day2 数据类型与控制结构实践(开发计算器)
  • 【高并发内存池】第二弹---深入解析高并发内存池与ThreadCache设计
  • Collection系列集合的小结+集合并发修改异常问题
  • 13 - linux 内存子系统
  • redis主从架构和集群---java
  • 【sql靶场】第18-22关-htpp头部注入保姆级教程
  • ELK+Filebeat+Kafka+Zookeeper安装部署
  • 第3章:Docker架构详解:从守护进程到镜像仓库
  • (二)Reactor核心-前置知识1
  • 《心理学与生活》2025最新网课答案