溫馨提示×

C語言鏈表復制的方法是什么

小億
179
2023-11-22 15:01:40
欄目: 編程語言

復制鏈表的一種常見方法是遍歷原鏈表,創建一個新節點,并將原鏈表節點的值復制到新節點中,然后將新節點連接到新鏈表中。具體步驟如下:

  1. 創建一個指向原鏈表頭節點的指針p。
  2. 創建一個新鏈表的頭節點newHead和尾節點newTail,并將它們初始化為NULL。
  3. 使用循環遍歷原鏈表,直到p指向NULL
    • 在每次循環中,創建一個新節點newNode,并將原鏈表節點p的值復制到newNode中。
    • newNodenext指針指向NULL。
    • 如果newTailNULL,則將newNode設置為新鏈表的頭節點newHead,并將newTail指向newNode。
    • 否則,將newNode連接到新鏈表的尾部,即將newTailnext指針指向newNode,并更新newTailnewNode。
    • p指向下一個節點,即p指向pnext。
  4. 返回新鏈表的頭節點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;
}

使用該方法可以復制一個鏈表并返回新鏈表的頭節點。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女