写一个函数,完成如下功能:已知指针la、lb分别指向一个带头结点的非递减有序单链表,将其合并成一个带头结点的非递减有序单链表。
时间: 2023-05-28 13:07:36 浏览: 118
小白算法积累——单链表15#2个带头结点单链表+提取公共元素+二表合一
```c
void mergeList(LinkList la, LinkList lb) {
LNode *pa = la->next, *pb = lb->next, *pc = la;
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;
}
}
pc->next = pa ? pa : pb;
free(lb);
}
```
解析:
1. 定义三个指针pa、pb、pc分别指向la、lb、la的头结点。
2. 循环遍历链表la和链表lb,比较pa和pb指向的结点的data域的大小,将较小的结点接在pc指向的结点之后,并分别将pa和pb指向下一个结点。
3. 当pa或pb为空时,退出循环。
4. 将剩余的结点接在pc指向的结点之后。
5. 释放链表lb的头结点。
阅读全文