C语言如何将一个单链表连接到另一个链表
时间: 2024-05-02 08:20:12 浏览: 8
C语言中可以通过遍历第一个链表找到最后一个节点,然后将其next指针指向第二个链表的头节点。具体实现可以参考以下代码:
```
typedef struct node {
int data;
struct node *next;
} Node;
Node* mergeLinkedList(Node *lst1, Node *lst2) {
Node *p = lst1;
while (p->next != NULL) {
p = p->next;
}
p->next = lst2;
return lst1;
}
```
相关问题
用c语言创建一个单链表并输出单链表
以下是使用C语言创建一个单链表并输出的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构体
struct Node {
int data;
struct Node* next;
};
int main() {
struct Node* head = NULL;
struct Node* second = NULL;
struct Node* third = NULL;
// 分配三个节点内存并将它们连接起来
head = (struct Node*) malloc(sizeof(struct Node));
second = (struct Node*) malloc(sizeof(struct Node));
third = (struct Node*) malloc(sizeof(struct Node));
head->data = 1; // 设置第一个节点的数据
head->next = second; // 将第一个节点连接到第二个节点
second->data = 2; // 设置第二个节点的数据
second->next = third; // 将第二个节点连接到第三个节点
third->data = 3; // 设置第三个节点的数据
third->next = NULL; // 将第三个节点的下一个节点设置为 NULL
// 遍历链表并输出每个节点的数据
struct Node* current = head;
while (current != NULL) {
printf("%d ", current->data);
current = current->next;
}
return 0;
}
```
在上面的代码中,我们首先定义了一个名为“Node”的结构体,用于表示链表中的每个节点。然后,我们定义了三个名为“head”、“second”和“third”的指向Node结构体的指针,用于表示链表中的前三个节点。接着,我们使用“malloc”函数为每个节点分配内存,并设置它们之间的连接关系。
最后,我们使用一个名为“current”的指向Node结构体的指针来遍历链表,并在每个节点处输出其数据。注意,我们使用“current->next”来遍历链表中的下一个节点,直到找到最后一个节点,即其“next”指针为NULL。
用C语言建立一个单链表
好的,我可以回答这个问题。建立一个单链表的基本步骤是:定义一个结构体来表示链表节点,包括数据域和指向下一个节点的指针;定义一个头指针指向链表的第一个节点;通过动态内存分配来创建节点并将它们连接起来。具体实现可以参考以下代码:
```
#include <stdio.h>
#include <stdlib.h>
struct ListNode {
int data;
struct ListNode* next;
};
int main() {
struct ListNode* head = NULL;
struct ListNode* tail = NULL;
// 创建链表
for (int i = 1; i <= 5; i++) {
struct ListNode* node = (struct ListNode*)malloc(sizeof(struct ListNode));
node->data = i;
node->next = NULL;
if (head == NULL) {
head = node;
tail = node;
} else {
tail->next = node;
tail = node;
}
}
// 遍历链表并输出
struct ListNode* p = head;
while (p != NULL) {
printf("%d ", p->data);
p = p->next;
}
// 释放链表内存
p = head;
while (p != NULL) {
struct ListNode* q = p;
p = p->next;
free(q);
}
return 0;
}
```