1.问题描述:
给定a,b两个有序递增单链表(带头结点)合并为新的有序递减单链表c。
2.解题思路:
将a,b两个链表均从第一个结点开始比较,将数值小的结点使用头插法插入新的链表c中就可达到有序递减的目的。
3.代码实现:
LinkList mergelist (LinkList &La, LinkList &Lb, LinkList &Lc) { LNode *r, *p = La->next, *q = Lb->next; Lc->next = NULL; while(p && q) //当两个列表均非空时 { if(p->data<=q->data) //若p的值较小 { r = p->next; //r为p的后继结点,以防断链 p->next = Lc->next; Lc->next = p; p = r; } else { r = q->next; q->next = Lc->next; Lc->next = q; q = r; } } if(p) q=p; //处理剩下的一个列表非空时 while(q) { r = q->next; q->next = Lc->next; Lc->next = q; q = r; } return Lc; }