假设有两个按数据元素值递增有序排列的线性表A和B,均以带头结点的单链表作存储结构。编写算法将表A和表B归并成一个按元素值递减有序排列的单链表C,并要求利用原表(即A表和B表的)结点空间存放表C。
merge_AB_C(LinkList A,LinkList B,LinkList C) { LinkList p,q; p=A一>next; q=B一>next; A—>next=NULL; C=A; while(p!=NULL&&q!=NULL) if(p一>data<=q一>data) { s—p一>next; p一>next=C一>next; //前插 C一>next=P; P=S; } else { s=q一>next; q一>next=C一>next; //前插 C一>next=q; q=S; } while(p!=NULL) { s=p一>next; p一>next=C一>next; //前插 C一>next=P; P=S; } while(q!=NULL) { s=q一>next; q一>next=C一>next; //前插 C一>next=q; q=s; } free(B); }