假设有两个按元素递增有序排列的线性表 A 和 B,均以带头结点的链表作为存储结构,编写算法,将 A 表和 B 表归并成一个按元素递减有序排列的线性表 C,并要求利 用原表(A 表和B 表)的结点空间存放表 C。
算法:
struct Lnode{
datatype data;
struct Lnode *next;
}
void merge_dowum(Linklist &La,Linklist &Lb,Linklist &Lc){
pa=la->next;
pb=lb->next;
pc=la;
lc->next==NULL;
while(pa||pb){
if(!pa){//只要存在一个非空表,用pc指向待摘取元素
pc=pa;
pa=pa->next;
}
else if(!pb){
pc=pb;
pb=pb->next;
}
else if(pa->data <= pb->data{
pc=pa;
pa=pa->next;
}
else{
pc=pb;
pb=pb->next;
}
pc->next=lc->next;将pc指向的结点插在lc的头结点之后
lc->next=pc;
}
}