单链表主类
有序链表合并思路
原链表m
和n
都是有序的,比如都是正序排列(从小到大)
两个链表同时从头开始向后移动
移动前先比较节点大小,更小的存入新链表的链尾(此为中间步骤)
直到有一个链表移动结束,再将另一个链表的剩余部分追加到新链表的链尾。
代码
public SinglyLinkedList<T> mergeSorted(SinglyLinkedList<T> sortedList) {
// 空链情况处理
if (this.getHeader() == null) {
return sortedList;
}
if (sortedList == null || sortedList.getHeader() == null) {
return this;
}
SinglyLinkedList<T> mergeResult = new SinglyLinkedList<T>();
SinglyLinkedNode<T> m = this.getHeader();
SinglyLinkedNode<T> n = sortedList.getHeader();
// 先处理头
int compare = m.compareTo(n);
if (compare < 0) {
// m比n小
mergeResult.setHeader(m);<