package Linear;
/*
* 合并链表:将两递增有序A,B合并为一个递增有序链表C(链式结构),利用A和B中的结点
*/
public class E {
public static Node merge(Node A,Node B) {
Node ppre=A; //永远指向p前缀结点
Node qpre=B; //永远指向q前缀结点
Node p =A.next;
Node q =B.next;
Node C=new Node();
Node t =C;
while (p!=null&&q!=null) {
if (p.data<=q.data) {
ppre.next=p.next;
p.next=t.next;
t.next=p;
t=t.next;
p=ppre.next;
}else {
qpre.next=q.next;
q.next=t.next;
t.next=q;
t=t.next;
q=qpre.next;
}
}
if (p==null) {
t.next=q;
B.next=null;
B=null;
}else {
t.next=p;
A.next=null;
A=null;
}
return C;
}
public static void main(String[] args) {
Node A=NodeTool.CreateNodeList("134");
Node B=NodeTool.CreateNodeList("246");
Node C=merge(A, B);
NodeTool.traverseWithHead(C);
NodeTool.traverseWithHead(A);
NodeTool.traverseWithHead(B);
}
}