本文结点不再赘述,继续使用链表管理类
具体的链表构建参考上篇文章:
有序链表顾名思义,就是当新增一个结点的时候根据结点的值,插入对应位置,使链表升序或降序
//声明头结点
public ListNode head = null;
//构建有序链表
public void sortlist(int value) {
//使用入参创建新节点
ListNode newLink = new ListNode(value);
//记录上一个结点
ListNode previous = null;
//游标结点,用来遍历链表
ListNode current = head;
//只要当前节点不为空且新结点值大于当前结点值就向后遍历
while ((current != null) && (value > current.value)) {
previous = current;
current = current.next;
}
if (previous == null) {
head = newLink;
} else {
//找到了第一个结点值小于新结点值的位置,并让上一个结点指向新结点
previous.next = newLink;
}
//新结点指向当前结点
newLink.next = current;
}
测试
LinkList linkList = new LinkList();
linkList.sortlist(4);
linkList.sortlist(5);
linkList.sortlist(1);
linkList.sortlist(2);
linkList.sortlist(3);
System.out.println(linkList.head);
结果