void UnionList1(LinkNode * LA, LinkNode * LB, LinkNode &LC)
{ LinkNode pa=LA->next, * pb=LB-> next,r,s; //1
LC=(LinkNode )malloc( sizeof( LinkNode)); //2
r=LC; //3
while (pa!=NULL && pb!= NULL) //4
{ if (pa -> data< pb -> data) //5
{ s=(LinkNode )malloc( sizeof(LinkNode); //6
s -> data= pa -> data; //7
r->next=s; //8
r=s; //9
pa=pa - next; //10
}
else
{ s =(LinkNode * )malloc(sizeof( LinkNode)); //11
s-> data=pb-> data; //12
r-> next=s;r= s; //13
pb= pb -> next; //14
}
}
while (pa!= NULL) //15
{ s=(LinkNode ) malloc(sizeof(LinkNode)); //16
s-> data=pa -> data; //17
r > next=s;r=s; //18
pa=pa->next; //19
}
while (pb!= NULL) //20
{ s= (LinkNode ) malloc(sizeof( LinkNode)); //21
s-> data= pb -> data; //22
r-> next=s;r= s; //23
pb=pb -> next; //24
}
r-> next= NULL; //25
}
语法不懂:为什么要定义一个指针*r指向LC,LC不是空链表么,为什么第8句不直接写成LC->next=s?
分析:该段代码在运行过程中分别扫描LA,LB两个有序表,比较LA,LB当前元素,讲其中较小的元素放入LC中,再从较小元素所在的有序表中取下一个元素。
ElemType M_Search(SqList A,sQlist B)
{ int i=0,j=0,k=0; //1
while(i
{ k++; //3
if(A->data[i]
{ if(k==A->length) //5
return A->data[i]; //6
i++; //7
}
else
{ if(k==B->length) //8
return B->data[j]; //9
j++; //10
}
}
}
分析:分别扫描顺序表A,B,将较小的数取出后,被取数的顺序表指针往下指,再继续比较两个顺序表的大小,直到找出中位数。
原文:https://www.cnblogs.com/afairyfairy/p/10595456.html