构造两个带有表头结点的有序单链表la、lb,编写程序实现将lb融合到la中。 融合的思想是:依次将lb的每一个结点按数值大小插入到la中。
时间: 2023-06-05 21:47:48 浏览: 143
首先,我们需要定义一个带有表头结点的单链表的结构体:
```
typedef struct Node {
int data;
struct Node *next;
} Node, *LinkedList;
```
然后,我们可以按照题目要求构造两个有序单链表la和lb,并将它们融合到la中:
```
void merge(LinkedList la, LinkedList lb) {
Node *pa = la->next;
Node *pb = lb->next;
Node *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);
}
```
在这个函数中,我们使用三个指针pa、pb、pc分别指向la、lb、la的表头结点,然后依次比较pa和pb指向的结点的数值大小,将较小的结点插入到la中,并将pc指向新插入的结点。最后,如果pa或pb还有剩余的结点,直接将它们接到la的末尾即可。最后,我们需要释放lb的表头结点。