已知带头结点的单链表A和B的头指针分别为La和Lb,将单链表B链接到单链表A的尾节点后,将两个链表合并为一个单链表,请写出该算法,c语言
时间: 2024-10-19 08:17:42 浏览: 45
为了将单链表B连接到单链表A的尾部,你需要创建一个新的链表结构,然后遍历两个链表,找到A的最后一个节点,并将其next指向B的第一个节点。下面是C语言的一个简单示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构
typedef struct ListNode {
int data;
struct ListNode* next;
} ListNode;
// 创建新节点
ListNode* createNode(int val) {
ListNode* newNode = (ListNode*)malloc(sizeof(ListNode));
newNode->data = val;
newNode->next = NULL;
return newNode;
}
// 合并链表
ListNode* mergeLists(ListNode* La, ListNode* Lb) {
// 如果A为空,则直接返回B
if (!La) {
return Lb;
}
// A不为空,寻找A的尾节点
ListNode* tail = La;
while (tail->next != NULL) {
tail = tail->next;
}
// 将B的头节点接到A的尾部
tail->next = Lb;
// 返回合并后的链表头
return La;
}
int main() {
// 测试代码(这里仅做演示,实际使用需要提供具体的La和Lb)
ListNode* La = createNode(1);
La->next = createNode(2);
La->next->next = createNode(3); // 假设这已经是A的尾节点
ListNode* Lb = createNode(4);
Lb->next = createNode(5);
ListNode* result = mergeLists(La, Lb);
// 遍历结果链表打印数据
ListNode* temp = result;
while (temp != NULL) {
printf("%d -> ", temp->data);
temp = temp->next;
}
return 0;
}
```
阅读全文