用C语言写出一个函数,把首指针为head2的简单链表中的结点全部接在首指针为 head1的简单链表的结点之后,形成一个新链表(头指针仍为head1)
时间: 2024-03-23 19:40:47 浏览: 56
以下是使用 C 语言实现把两个简单链表合并的代码:
```c
#include <stdio.h>
typedef struct Node {
int val;
struct Node *next;
} Node;
void mergeLinkedList(Node *head1, Node *head2) {
if (head1 == NULL || head2 == NULL) {
return;
}
Node *p = head1;
while (p->next != NULL) {
p = p->next;
}
p->next = head2;
}
int main() {
Node *head1 = (Node*)malloc(sizeof(Node));
head1->val = 1;
head1->next = NULL;
Node *node1 = (Node*)malloc(sizeof(Node));
node1->val = 2;
node1->next = NULL;
Node *node2 = (Node*)malloc(sizeof(Node));
node2->val = 3;
node2->next = NULL;
head1->next = node1;
node1->next = node2;
Node *head2 = (Node*)malloc(sizeof(Node));
head2->val = 4;
head2->next = NULL;
Node *node3 = (Node*)malloc(sizeof(Node));
node3->val = 5;
node3->next = NULL;
Node *node4 = (Node*)malloc(sizeof(Node));
node4->val = 6;
node4->next = NULL;
head2->next = node3;
node3->next = node4;
mergeLinkedList(head1, head2);
Node *p = head1;
while (p != NULL) {
printf("%d ", p->val);
p = p->next;
}
return 0;
}
```
解释一下代码:
- 首先我们定义了一个结构体 `Node`,用于表示链表中的一个结点。其中 `val` 代表结点的值,`next` 指向下一个结点。
- 然后我们定义了一个函数 `mergeLinkedList`,它接收两个参数:`head1` 和 `head2`,分别代表两个简单链表的头结点。它会遍历 `head1` 链表,找到最后一个节点,然后将 `head2` 链表接在它后面。最终,`head1` 链表就是两个链表合并后的新链表。
- 在主程序中,我们创建了两个简单链表 `head1` 和 `head2`,并初始化它们的值。然后我们调用 `mergeLinkedList` 函数将它们合并。
- 最后,我们遍历新链表 `head1`,并输出每个结点的值。
希望这能够帮到你!
阅读全文