自己实现集合框架(八):可排序单链表的实现

0?wx_fmt=gif

0?wx_fmt=jpeg

一. 什么叫可排序的单链表?

场景描述:什么叫可排序的单链表?data的值按照递增(由小到大)或者递减(由大到小)的方式链接起来。如何实现可排序的单链表?java里面的TreeSet集合是可排序的,并且支持自然排序和定制排序两种方式。那么可排序的单链表是如何做到可排序的呢?java.lang.Comparable接口,并实现该接口的compareTo()方法,该方法返回一个整数值,当一个对象调用该方法与另外一个对象进行比较时,例如obj1.compareTo(obj2),如果该方法返回0,则表明这两个对象相等;如果该方法返回一个正整数,则表明obj1大于obj2;如果该方法返回一个负整数,则表明obj1小于obj2。那么单链表要实现可排序,则结点data域的对象必须是可比较大小的,即已经实现了java.lang.Comparable接口的compareTo()方法。

二. 可排序单链表的实现

1.定义可排序单链表

0?wx_fmt=png

2. 可排序单链表的插入

0?wx_fmt=png

代码解释:

1. 插入的元素对象不能为空,并且需要实现Comparable接口。0个节点开始,将待插入元素elment依次与当前结点的data值比较大小,以确定插入位置并进行插入操作。

3. 可排序单链表的移除

0?wx_fmt=png

代码解释:

可排序单链表的删除,在实际的操作逻辑上和可排序的单链表的插入比较类似,都是需要比较大小,然后移动数据元素。

三.测试

测试代码如下所示:

0?wx_fmt=png

运行效果如下图所示:0?wx_fmt=png

四.源代码示例

0?wx_fmt=gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值