02-线性结构1 两个有序链表序列的合并
主要思想
首先读题非常重要!!我总是以为合并就是再创建一个链表,把L1和L2的数字复制过去就行,结果一直报错,程序也很臃肿。。。。
其实没那么麻烦,只需要创建一个结点L, 然后用指针将 L1 和 L2 的Next 改一下,全部接到 L的后面就行。
最好扫尾工作将 L1 和 L2 变成空表就行了。
代码
List Merge( List L1, List L2 ){
List P1 = L1->Next, P2 = L2->Next, P;
List L = (List)malloc(sizeof(PtrToNode));
P = L;
while( P1 && P2 ){
if( P1->Data > P2->Data ){
P->Next = P2;
P = P2;
P2 = P2->Next;
}
else{
P->Next = P1;
P = P1;
P1 = P1->Next;
}
}
P->Next = P1 ? P1 : P2;
L1->Next = NULL;
L2->Next = NULL;
return L;
}