91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

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
石河子市| 长泰县| 吉木萨尔县| 洱源县| 缙云县| 信丰县| 博野县| 平山县| 五原县| 鹤庆县| 邵阳市| 阜宁县| 岐山县| 盱眙县| 遂溪县| 桃江县| 象州县| 惠来县| 民权县| 英山县| 洪泽县| 社会| 和田市| 德阳市| 五莲县| 东丰县| 宣武区| 广安市| 黎城县| 龙门县| 南宫市| 兴安县| 康保县| 鄄城县| 自治县| 将乐县| 泸西县| 保亭| 当涂县| 耒阳市| 梓潼县|