C语言链表复制的方法是什么
复制链表的一种常见方法是遍历原链表,创建一个新节点,并将原链表节点的值复制到新节点中,然后将新节点连接到新链表中。具体步骤如下:
- 创建一个指向原链表头节点的指针
p。 - 创建一个新链表的头节点
newHead和尾节点newTail,并将它们初始化为NULL。 - 使用循环遍历原链表,直到
p指向NULL:- 在每次循环中,创建一个新节点
newNode,并将原链表节点p的值复制到newNode中。 - 将
newNode的next指针指向NULL。 - 如果
newTail为NULL,则将newNode设置为新链表的头节点newHead,并将newTail指向newNode。 - 否则,将
newNode连接到新链表的尾部,即将newTail的next指针指向newNode,并更新newTail为newNode。 - 将
p指向下一个节点,即p指向p的next。
- 在每次循环中,创建一个新节点
- 返回新链表的头节点
newHead。
下面是使用C语言实现的示例代码:
#include <stdio.h>
#include <stdlib.h>
struct ListNode {
int val;
struct ListNode *next;
};
struct ListNode* copyList(struct ListNode* head) {
struct ListNode *p = head;
struct ListNode *newHead = NULL;
struct ListNode *newTail = NULL;
while (p != NULL) {
struct ListNode *newNode = (struct ListNode*)malloc(sizeof(struct ListNode));
newNode->val = p->val;
newNode->next = NULL;
if (newTail == NULL) {
newHead = newNode;
newTail = newNode;
} else {
newTail->next = newNode;
newTail = newNode;
}
p = p->next;
}
return newHead;
}
使用该方法可以复制一个链表并返回新链表的头节点。
版权声明
本文仅代表作者观点,不代表米安网络立场。
上一篇:C++中seekg的用法是什么 下一篇:python多进程内存泄露如何解决
博豪信息



发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。