将两个有序链表合并,合并后的链表仍为有序链表
思路分析:
1)首先定义一个新的链表,并且将其初始化,再定义一个辅助节点cur,该节点指向新的链表的头节点mergeHead
2)循环遍历两个链表h1,h2,每次遍历时各取出一个节点,将一个节点的data域与另一个的节点的data域相比较,看那个较小。将较小的节点赋给cur的next域
3)再将较小的节点后移,并且将cur节点也后移一个位置
4)当h1或者h2其中一个为空的时候跳出循环,如果h1不为空则将h1赋给cur.next,否则将h2赋给cur.next
5)因为合并后的头结点在新的链表的头结点之后,所以返回mergeHead.next即可完成合并
代码实现
//两个有序链表合并,合并后仍为有序链表
public static HeroNode mergeList(HeroNode h1,HeroNode h2) {
//定义第三个链表的头结点,并且初始化
HeroNode mergeHead = new HeroNode(0,"","");
//定义一个辅助节点
HeroNode cru = mergeHead;
//当链表h1和链表h2都不为空时
while (h1 != null && h2!=null){
//判断序号的大小
if (h1.no<h2.no){
cru.next = h1;
cru = cru.next;
h1 = h1.next;
}else {
cru.next = h2;
cru = cru.next;
h2 = h2.next;
}
}
if (h1 !=null){
cru.next = h1;
}
if (h2 != null){
cru.next = h2;
}
return mergeHead.next;
}