--- 数据结构 链表 --- java
与顺序表相比,链表的最大优点就是不会存在空间的浪费
链表是通过将一个一个储存数据的节点(对象)连起来(通过记录下他们的地址),这些数据在逻辑上就是线性的,但在物理上不是,因为地址是随机的
链表的设计,
在自己实现的链表中还有个LIstNode类,这个是用来创造节点,而mylistnode中是实现方法对listNode进行增删查改的操作
head是储存链表的头一个节点
ListNode类使用static修饰,这样你在外部类不用newmylistnode也能使用,不过其实你不写也没有问题的也能正常实现的,不过加上是一个好的习惯,下面的图是java自己实现的链表的构造方法
可以看到也是加了static
val用来储存数据,next用来连接下一个节点
增 add 头插 尾插
会有俩种情况,一是不存在链表,也就是head为空,那么我们直接创建一个节点赋给head
二是head不为空,那么我们就要找到他的尾巴,然后创建节点插入这个尾巴
删 del
尾删,这时需要遍历找到尾节点前一个节点,见这个节点的next置为空,这样就算是删除了最后一个节点
查找 contain
遍历这个链表,使用while不会空那么就走到下一个节点 tmp = tmp.next,并在走之前判断这个值是否存在
改 set
和查找一样,先找到这个节点,然后更改这个节点的值,然后退出返回true证明更改成功
这样增删查改就完成了,但这个仅仅只是开始,还可实现指定位置的插入,指定值的删除,删除所有链表中存在的指定值,查找该值并返回该节点等等
end fight!!~~