--- 数据结构 链表 --- 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!!~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值