题目:将两个从小到大排序好的链表L1、L2合并到L3中
List Merge( List L1, List L2 )
{
List p1, p2, p3, L;
L = (List)malloc(sizeof(struct Node));
p1 = L1->Next;
p2 = L2->Next;
p3 = L;
while (p1 && p2){
if (p1->Data <= p2->Data){
p3->Next = p1;
//p3 = p1;
p1 = p1->Next;
} else {
p3->Next = p2;
//p3 = p2;
p2 = p2->Next;
}
p3=p3->Next;
}
p3->Next = p1 ? p1 : p2;
L1->Next = NULL;
L2->Next = NULL;
return L;
}
**分析:**在上面的代码中我刚开始很不理解为什么要将P1赋给P3, p3->Next = p1这句话的意思相当于一个指针,是将P1的下一个地址赋给p3的下一个地址,p3 = p1相当于p3=p3->Next只是将P3继续指向下一个地址,所以可以将if else中的 p3 = p1; 和p3 = p2直接在循环外写成p3=p3->Next(注意:结点L是动态分配内存)
对合并链表的理解
最新推荐文章于 2020-12-27 09:45:58 发布