void MergeList_L(LinkList &La, LinkList &Lb, LinkList &Lc
int (*compare)(ElemType,ElemType))) {
// 已知单链线性表La和Lb的元素按值非递减排列,归并
// La和Lb得到新的单链线性表Lc,Lc的元素也按值非递减排列
if ( !InitList(Lc)) return ERROR; // 存储空间分配失败
LocatePos (La, 0); LocatePos (Lb, 0); // 当前指针指向头结点
if ( DelAfter( La, e)) a = e;
else a = MAXC; // MAXC为常量最大值
if ( DelFirst( Lb, e)) b = e;
else b = MAXC; // a和b为两表中当前比较元素
while (!( a=MAXC && b=MAXC)) { // La或Lb非空
if ((*compare)(a, b) <=0) { // a≤b
InsAfter(Lc, a);
if ( DelAfter( La, e1) a = e1;
else a = MAXC; }
else { // a>b
InsAfter(Lc, s);
if ( DelAfter( Lb, e1) b = e1;
else b = MAXC; } }
DestroyList(La); DestroyList(Lb); // 销毁链表La和Lb
return OK;
} // MergeList_L
int (*compare)(ElemType,ElemType))) {
// 已知单链线性表La和Lb的元素按值非递减排列,归并
// La和Lb得到新的单链线性表Lc,Lc的元素也按值非递减排列
if ( !InitList(Lc)) return ERROR; // 存储空间分配失败
LocatePos (La, 0); LocatePos (Lb, 0); // 当前指针指向头结点
if ( DelAfter( La, e)) a = e;
else a = MAXC; // MAXC为常量最大值
if ( DelFirst( Lb, e)) b = e;
else b = MAXC; // a和b为两表中当前比较元素
while (!( a=MAXC && b=MAXC)) { // La或Lb非空
if ((*compare)(a, b) <=0) { // a≤b
InsAfter(Lc, a);
if ( DelAfter( La, e1) a = e1;
else a = MAXC; }
else { // a>b
InsAfter(Lc, s);
if ( DelAfter( Lb, e1) b = e1;
else b = MAXC; } }
DestroyList(La); DestroyList(Lb); // 销毁链表La和Lb
return OK;
} // MergeList_L