List Merge( List L1, List L2 )
{
List p1,p2,p,L;
//以p1,p2表示更加简洁
p1=L1->Next;
p2=L2->Next;
//分别遍历两个链表
L=(List)malloc(sizeof(List));
//新的头结点
L->Data=L1->Data+L2->Data;
//此处不需要赋值也是正确的,但是如果写L->Data=NULL大错特错,NULL指向的是一个地址
p=L;
//以p来进行操作
while(p1!=NULL&&p2!=NULL)
{
if((p1->Data)<(p2->Data))
{
p->Next=p1;
p=p->Next;
p1=p1->Next;
}
else
{
p->Next=p2;
p=p->Next;
p2=p2->Next;
}
}
//这里不能够用pc->Next=pa? pa : pb;表示
if(p1==NULL)
{
p->Next=p2;
}
else if(p2==NULL)
{
p->Next=p1;
}
//最后这里是将原来的L1,L2变为空链表,而不是p1p2!
L1->Next=NULL;
L2->Next=NULL;
return L;
}
//写代码过程中一定要注意括号是否完全对应,有的编译平台没有提示
线性结构练习--两个有序链表的合并 线性结构1两个有序链表的合并,满分代码+注意点+代码注释
于 2024-03-22 21:54:10 首次发布