数据结构 1(线性表)

以无比激动的心情初识数据结构,早在java SE时期就听闻其大名,但未曾见过他的真面目,接下来的日子我就要慢慢学习他了,真是令人心动。先说说什么是数据结构吧,数据结构就是相互之间存在一种或多种特定关系的数据元素的集合

线性表是数据结构中尤为重要的知识点,因此我在这整理线性表的重要知识,便于我日后的复习巩固。

1.何为线性表:

在这里插入图片描述

2.线性表的定义:

(1).

线性结构是n(n≥0)个结点的有穷序列(a0, a1, …, an-1)。a0被称为起始结点, an-1被称为终端结点,i称为ai的序号或位置。对任意一对相邻结点ai和ai+1(0≤i≤n-2),ai被称为ai+1的直接前驱,ai+1称为ai的直接后继。其实结点只有直接后继,终端结点只有直接前驱。线性结构中的每个结点代表一个数据元素。在不同的实际问题中,结点代表的数据元素是不同的。

(2).

直接前驱和直接后继就是所谓的结点间的逻辑关系,这两种关系从不同角度刻画了同一种关系,及邻接关系。线性结构中的邻接关系是一对一的,及每个结点至多有一个直接前驱和后继。而所有的结点按一对一的邻接关系构成的整体就是线性结构。

(3).

线性表是处理线性结构的数据结构。线性表中的数据元素的个数称为线性表的长度,简称为表长。表长为0的线性表为空表。 线性表以某种方式保存结构的值以及结点直接的关系,实现线性结构中的各种操作。

3.线性表的动态数组实现:

(1). 首先创建List.java写入代码,之后会将这些方法一一实现:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

(2).将上述方法一一实现:

getSize()函数

获取线性表中元素的个数

直接返回size即可

在这里插入图片描述
2.

isEmpty()函数

判断线性表是否为空表

直接判断size==0的结果即可

在这里插入图片描述
3.

add()函数

在线性表中指定角标index处插入元素e

在数组中添加元素主要分为三种情况:

<1.>在表头插入:index=0
<2.>在表中插入:index∈(0,size)任意
<<3.>>在表尾插入:index=size

但是前两种不管你从哪里插入都是写一个for循环,让插入位置以后的元素挨个后移,然后新的元素再插入进来,第三种方式就很简单了,直接把新元素放在队尾就可以。

在这里插入图片描述

resize()函数

这个函数是为了实现数组的自动扩容和缩容功能的

如果元素填满了数组( size==data.length),此时就要需要考虑数组该扩容了,一般扩容为原先的2倍

扩容:

创建一个比原先数组大2倍的新数组,然后将老数组中的值挨个放入到新数组中,最后新数组替代老数组即可

在这里插入图片描述

addFirst()函数

在线性表中第一个位置插入元素e

复用add()即可

在这里插入图片描述

addLast()函数

在线性表中最后一个位置插入元素e

复用add()即可

在这里插入图片描述
7.

get()函数

获取线性表中指定角标index处的元素

直接返回数组[index],注意角标越界问题

在这里插入图片描述

getFirst()函数

获取线性表中第一个元素

复用get()函数

在这里插入图片描述

getLast()函数

获取线性表中最后一个元素

复用get()函数

在这里插入图片描述

set函数

修改线性表中指定角标index处的元素为新元素e

在这里插入图片描述

contains()函数

判断线性表中是否包含指定元素e

在这里插入图片描述

find()函数

获取线性表中元素e从头到尾第一次出现的位置

在这里插入图片描述

remove()函数

删除并返回线性表中指定角标index处的元素

删除分为删除表头,删除表中,和删除表尾三种情况

删除表头:先取出要删除的元素,然后另 i 从 0 开始,到size-2结束,将 i+1 的元素赋予 i 即可,最后 size–

删除表中:先取出要删除的元素,然后另 i 从 index 开始,到size-2结束,将 i+1 的元素赋予 i 即可,最后 size–

删除表尾:直接size–即可

此处的重点在于,删除元素之后,可能有缩容的情况,什么时候缩容呢,当 size==data.length/4 时缩容

一般设置在1/4处即可;这样子就避免了缩的太勤的问题

如果已达到默认容量的话,则不需要再缩了

在这里插入图片描述

removeFirst()函数

删除并返回线性表中第一个元素

复用remove()即可

在这里插入图片描述

removeLast()函数

删除并返回线性表中最后一个元素

复用remove()即可

在这里插入图片描述

removeElement()函数

删除线性表中指定元素e

先找,再删

在这里插入图片描述

clear()函数

直接让size为0

即表示清空线性表

在这里插入图片描述


版权声明:本文为weixin_45333967原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。