C语言如何一个链表赋给第二个链表
时间: 2024-06-20 20:02:13 浏览: 122
c语言双链表实现
在C语言中,将一个链表赋值给另一个链表通常涉及到链表的复制操作,因为C语言本身没有直接的赋值机制用于链表结构。这里简单介绍一种常见的链表复制方法,使用迭代或递归实现:
**迭代法:**
```c
struct Node {
int data;
struct Node* next;
};
void copyList(struct Node** src, struct Node** dest) {
if (*src == NULL) {
*dest = NULL;
return;
}
struct Node* new_node = (struct Node*)malloc(sizeof(struct Node));
new_node->data = (*src)->data;
new_node->next = NULL;
*dest = new_node;
(*dest)->next = copyList(src, &(*dest)->next);
}
// 使用示例:
struct Node* list1 = createLinkedList(); // 创建源链表
struct Node* list2 = NULL; // 初始化目标链表
copyList(&list1, &list2); // 复制
```
**递归法:**
```c
void copyListRecursively(struct Node* src, struct Node** dest) {
if (src == NULL) {
*dest = NULL;
return;
} else {
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
newNode->data = src->data;
newNode->next = NULL;
*dest = newNode;
(*dest)->next = copyListRecursively(src->next, &(*dest)->next);
}
}
// 使用示例同上
```
这两个例子假设`createLinkedList()`和`struct Node`是已有的链表创建和节点定义函数。
阅读全文