c语言连接两个单链表
时间: 2024-09-27 21:08:21 浏览: 24
在C语言中,连接两个单链表通常涉及到创建一个新的链表节点,并将其链接到两个已存在的链表之间。这里是一个简单的示例,假设我们有两个链表`list1`和`list2`,它们的头结点分别为`head1`和`head2`:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表结构体
typedef struct Node {
int data;
struct Node* next;
} Node;
// 创建新节点函数
Node* createNode(int value) {
Node* newNode = (Node*)malloc(sizeof(Node));
if (newNode != NULL) {
newNode->data = value;
newNode->next = NULL;
}
return newNode;
}
// 连接两个链表的函数
void concatenateLists(Node** head1, Node** head2) {
// 检查list1是否为空
if (*head1 == NULL) {
*head1 = *head2; // 如果list1为空,直接将list2作为新的链表
} else {
Node* current1 = *head1;
while (current1->next != NULL) {
current1 = current1->next;
}
// 将list2接到list1的末尾
current1->next = *head2;
}
}
// 打印链表
void printList(Node* node) {
while (node != NULL) {
printf("%d ", node->data);
node = node->next;
}
printf("\n");
}
int main() {
// 初始化链表示例
Node* list1_head = createNode(1);
list1_head->next = createNode(2);
Node* list2_head = createNode(3);
list2_head->next = createNode(4);
// 连接链表
concatenateLists(&list1_head, &list2_head);
// 打印结果
printf("Concatenated List: ");
printList(list1_head);
return 0;
}
```
在这个例子中,`concatenateLists`函数接收两个指向头结点的指针,并通过遍历第一个链表找到末尾,然后将第二个链表的头结点添加到第一个链表的末尾。
阅读全文