C语言链表复制的方法是什么

   2025-02-15 2750
核心提示:复制链表的一种常见方法是遍历原链表,创建一个新节点,并将原链表节点的值复制到新节点中,然后将新节点连接到新链表中。具体步

复制链表的一种常见方法是遍历原链表,创建一个新节点,并将原链表节点的值复制到新节点中,然后将新节点连接到新链表中。具体步骤如下:

创建一个指向原链表头节点的指针p。创建一个新链表的头节点newHead和尾节点newTail,并将它们初始化为NULL。使用循环遍历原链表,直到p指向NULL:在每次循环中,创建一个新节点newNode,并将原链表节点p的值复制到newNode中。将newNodenext指针指向NULL。如果newTailNULL,则将newNode设置为新链表的头节点newHead,并将newTail指向newNode。否则,将newNode连接到新链表的尾部,即将newTailnext指针指向newNode,并更新newTailnewNode。将p指向下一个节点,即p指向pnext。返回新链表的头节点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;}

使用该方法可以复制一个链表并返回新链表的头节点。

 
 
更多>同类维修知识
推荐图文
推荐维修知识
点击排行
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  网站留言