数据结构的基本算法 看不懂

void MergeList_Sq(SqList La, SqList Lb, SqList *Lc){ //三个参数最后一个前面加 * 为什么
//已知顺序线性表La和Lb的元素按值非递减排列
//归并La和Lb得到新的顺序线性表Lc,Lc的元素也按值非递减排列
ElemType *pa,*pb,*pc,*pa_last,*pb_last; //*pa_last,*pb_last 是什么意思
pa = La.elem; pb = Lb.elem; //这个后缀是elem又是什么意思
Lc->listsize = Lc->length = La.length+Lb.length;
pc = Lc->elem = (ElemType *)malloc(Lc->listsize*sizeof(ElemType));
if (!Lc->elem) //这个又是在判断什么
exit(OVERFLOW); // 存储分配失败
pa_last = La.elem+La.length-1;
pb_last = Lb.elem+Lb.length-1;
while (pa <= pa_last && pb <= pb_last) { // 归并
if (*pa <= *pb)
*pc++ = *pa++;
else
*pc++ = *pb++;
}
while (pa <= pa_last)
*pc++ = *pa++; // 插入La的剩余元素
while (pb <= pb_last)
*pc++ = *pb++; // 插入Lb的剩余元素
}

1 这里是按地址传递 所以要加*
2 *pa_last,*pb_last 表示指向pa和pb末尾的指针
3 La.elem的elem是啥 你应该去看SqList 的定义

4 这里是判断Lc->elem申请的空间是否成功
温馨提示:答案为网友推荐,仅供参考
相似回答