链表linked list: 将新节点链接到链表的末尾

// 在链表中插入新节点

// 这段代码定义了一个名为 insert 的函数,用于在链表中插入新节点。让我解释一下这段代码的逻辑:

// 函数接受两个参数:指向链表头节点的引用 head 和要插入的新节点的值 value。

// 首先,它创建了一个新的节点 newNode,并将新节点的数据域初始化为 value。

// 接着,它检查链表是否为空。如果链表为空(即 head 为 nullptr),则将新节点设为链表的头节点。
// 如果链表不为空,则遍历链表,直到找到最后一个节点(即指针域为 nullptr 的节点)。当 current->nextnullptr 时,表示 current 已经指向了链表的最后一个节点,循环结束。
// 将新节点链接到链表的末尾,即将当前最后一个节点的指针域指向新节点。

cpp 复制代码
#include <iostream>

// 定义链表节点结构体
struct Node {
    int data;       // 数据域
    Node* next;     // 指针域,指向下一个节点
};

// 在链表中插入新节点
// 这段代码定义了一个名为 insert 的函数,用于在链表中插入新节点。让我解释一下这段代码的逻辑:
// 函数接受两个参数:指向链表头节点的引用 head 和要插入的新节点的值 value。
// 首先,它创建了一个新的节点 newNode,并将新节点的数据域初始化为 value。
// 接着,它检查链表是否为空。如果链表为空(即 head 为 nullptr),则将新节点设为链表的头节点。
// 如果链表不为空,则遍历链表,直到找到最后一个节点(即指针域为 nullptr 的节点)。
// 将新节点链接到链表的末尾,即将当前最后一个节点的指针域指向新节点。
// 这样,新节点就成功地插入到了链表的末尾。这个函数的时间复杂度是 O(n),其中 n 是链表中节点的数量,因为它需要遍历整个链表来找到最后一个节点。
void insert(Node*& head, int value) {
    Node* newNode = new Node;
    newNode->data = value;  // 手动设置数据域的值
    newNode->next = nullptr; // 手动设置指针域的值

    if (head == nullptr) {
        head = newNode;
    } else {
        Node* current = head;//这行代码的含义是将 head 的地址赋值给指针 current。这样,current 就指向了链表的第一个节点,然后通过循环将 current 移动到链表的末尾。
        while (current->next != nullptr) {// 如果链表不为空,则遍历链表,直到找到最后一个节点(即指针域为 nullptr 的节点)。
            current = current->next;//当 current->next 为 nullptr 时,表示 current 已经指向了链表的最后一个节点,循环结束。
        }
        current->next = newNode;// 将新节点链接到链表的末尾,即将当前最后一个节点的指针域指向新节点。
    }
}

// 打印链表
void printList(Node* head) {
    Node* current = head;
    while (current != nullptr) {
        std::cout << current->data << " -> ";
        current = current->next;
    }
    std::cout << "nullptr" << std::endl;
}

// 主函数
int main() {
    Node* head = nullptr;
    insert(head, 1);
    insert(head, 2);
    insert(head, 3);
    printList(head);
    return 0;

1 -> 2 -> 3 -> nullptr

请按任意键继续. . .

相关推荐
秋风&萧瑟12 分钟前
【数据结构】顺序队列与链式队列
linux·数据结构·windows
sci_ei12313 小时前
高水平EI会议-第四届机器学习、云计算与智能挖掘国际会议
数据结构·人工智能·算法·机器学习·数据挖掘·机器人·云计算
qystca13 小时前
异或和之和
数据结构·c++·算法·蓝桥杯
周杰伦_Jay14 小时前
Ollama能本地部署Llama 3等大模型的原因解析(ollama核心架构、技术特性、实际应用)
数据结构·人工智能·深度学习·架构·transformer·llama
萌の鱼15 小时前
leetcode 221. 最大正方形
数据结构·c++·算法·leetcode
Joeysoda16 小时前
Java数据结构 (链表反转(LinkedList----Leetcode206))
java·linux·开发语言·数据结构·链表·1024程序员节
努力学习java的哈吉米大王17 小时前
数据结构-LinkedList和链表
数据结构·链表
pystraf17 小时前
P9069 [Ynoi Easy Round 2022] 堕天作战 TEST_98 Solution
数据结构·c++·算法
daiwoliyunshang17 小时前
二叉树--堆排序
数据结构·算法
脏脏a18 小时前
【数据结构篇】顺序表 超详细
c语言·数据结构·算法