项目场景:
提示:这里简述项目相关背景:
看了网上人家写的,自己拿来用一用,效果不如意,有的管都不管直接将链表2接在链表1之后,有的虽然有比较一下链表1与2的元素大小,在进行链接,但运行后有bug。自己写了一下,使用了递归的手法。
问题描述
提示:这里描述项目中遇到的问题:
有序链表的合并
* @auther: lawt
* @date: 2018/11/4 08
* @Description: 结点信息
*/
public class Node {
/**
* 为了方便,这两个变量都使用public,而不用private就不需要编写get、set方法了。
* 存放数据的变量,简单点,直接为int型
*/
public int data;
/**
* 存放结点的变量,默认为null
*/
public Node next;
/**
* 构造方法,在构造时就能够给data赋值
*/
public Node(int data) {
this.data = data;
}
}
public class MyList {
/**
* 递归方式合并两个单链表
*
* @param head1 有序链表1
* @param head2 有序链表2
* @return 合并后的链表
*/
public static Node mergeTwoList(Node head1, Node head2) {
//递归结束条件
if (head1 == null && head2 == null) {
return null;
}
if (head1 == null) {
return head2;
}
if (head2 == null) {
return head1;
}
//合并后的链表
Node head = null;
if (head1.data > head2.data) {
//把head较小的结点给头结点
head = head2;
//继续递归head2
head.next = mergeTwoList(head1, head2.next);
} else {
head = head1;
head.next = mergeTwoList(head1.next, head2);
}
return head;
}
原因分析:
提示:这里填写问题的分析:
使用递归合并
解决方案:
提示:这里填写该问题的具体解决方案:
如上述代码