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