中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

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

小億
123
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
班玛县| 孝感市| 衡东县| 岚皋县| 方正县| 宁国市| 应用必备| 阿克苏市| 当涂县| 特克斯县| 中方县| 云林县| 醴陵市| 伽师县| 浙江省| 双桥区| 永年县| 永济市| 宁都县| 大悟县| 怀来县| 普定县| 晴隆县| 茂名市| 吴旗县| 景洪市| 凌云县| 乃东县| 平乐县| 永嘉县| 邯郸县| 英德市| 广德县| 银川市| 监利县| 平定县| 垣曲县| 新乡县| 东山县| 雅江县| 灵石县|