两个不带头结点的有序单链表LA和LB的合并,请合并到LA表中再输出,LB表的空间全部释放。C语言实现代码
时间: 2023-10-30 13:17:38 浏览: 59
好的,以下是用C语言实现的代码:
```c
typedef struct Node {
int data;
struct Node *next;
} Node;
void mergeList(Node **LA, Node **LB) {
if (*LA == NULL) {
*LA = *LB;
*LB = NULL;
return;
}
if (*LB == NULL) {
return;
}
Node *p = (*LA)->next, *q = (*LB)->next, *r = *LA;
while (p != NULL && q != NULL) {
if (p->data < q->data) {
r = p;
p = p->next;
} else {
Node *tmp = q;
q = q->next;
tmp->next = p;
r->next = tmp;
r = tmp;
}
}
if (p == NULL) {
r->next = q;
}
(*LB)->next = NULL;
free(*LB);
*LB = NULL;
}
```
同样的,注意在合并之后,LB指针指向的链表已经被释放,不能再使用。