两个有序链表的合并
不和你多bb,直接上代码
个人复习用的,以后在补充。
//1.建立单链表
void Creatlist(Linklist& L) {
Linklist p, q;
int Da;
p = L = (Linklist)malloc(sizeof(LNode));
L->next = NULL;
while (1)
{
q = (Linklist)malloc(sizeof(LNode));
q->next = NULL;
cin >> Da;
if (Da == -100)break;
q->data = Da;
p->next = q;
p = p->next;
}
}
//2.设计两个有序链表进行合并的算法
void Mergelist(Linklist& la, Linklist& lb, Linklist& lc) {
Linklist pa, pb, pc;
pa = la->next;
pb = lb->next;
lc = pc = (Linklist)malloc(sizeof(LNode));
while (pa && pb) {
if (pa->data < pb->data) {
pc->next = pa;
pc = pa;
pa = pa->next;
}
else {
pc->next = pb;
pc = pb;
pb = pb->next;
}
}
if (pa) {
pc->next = pa;
}
if (pa) {
pc->next = pb;
}
pc->next = pa ? pa : pb;
free(lb);
free(la);
}
from nuister kjr