02-线性结构1 两个有序链表序列的合并 (15 分) 本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列。
List Merge( List L1, List L2 )
{
List L,rare,temp;
L = (List)malloc(sizeof(struct Node));
rare = L;
L1 = L1->Next;
L2 = L2->Next;
while(L1 && L2)
{
if(L1->Data >= L2->Data)
{
rare->Next = L2;
L2 = L2->Next;
}
else
{
rare->Next = L1;
L1 = L1->Next;
}
rare = rare->Next;
}
for( ; L1; L1 = L1->Next)
{
rare->Next = L1;
rare = rare->Next;
}
for( ; L2; L2 = L2->Next)
{
rare->Next = L2;
rare = rare->Next;
}
rare->Next = NULL;
return L;
}
输入 3 1 3 5 5 2 4 6 8 10 这样写输出的是 1 2 3 4 5 6 8 10 1 2 3 4 5 6 8 10 2 3 4 5 6 8 10 一:具体分析为什么会输出这种 是因为函数传入了L1和L2的复制 虽然不会改变main中L1和L2的地址值 但是因为可以改变在函数内部他们的指向和指向下的内容的值, 又有rare会有和L1和L2相等的时候,rare就改变了内部L1,L2的next指向的值 其实可以用 1 3 1 5 来自行推一下就明白了
|