一、题目
将两个递增有序的带头结点的单链表A、B合并成为一个递增有序的带头结点的单链表。
二、思路
将单链表A、B遍历,比较两个链表中元素的值,分为下列情况:
注意
三、输入输出样例:
输入:
A={1 3 5 7 9 }
B={2 4 6 8 10}
输出:
C={1 2 3 4 5 6 7 8 9 10 }
四、具体代码
public class SingleList {
public void single_List(Node A,Node B,Node C){
A=A.next;
B=B.next;
while(A!=null&&B!=null){
if(A.data<B.data){
C.next=A;
C=A;
A=A.next;
}
else if(A.data==B.data){
C.next=A;
A=A.next;
B=B.next;
}
else if(A.data>B.data){
C.next=B;
C=B;
B=B.next;
}
}
if(A!=null){
C.next=A;
}
if(B!=null){
C.next=B;
}
}
}
五、总结
当时判断A>B,A=B,A < B 三种情况时用了 if ….if….. if 这种结构,导致如果第一个if运行了,A=A.next之后很可能符合第二个if()语句,所以程序执行第二个if()语句,最终会导致指针乱指。所以必须换成 if….else if…..else if 这种语句;
说一下if ….if….. if与if….else if…..else if 两者区别:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)