/** * File: list_node.hpp * Created Time: 2021-12-19 * Author: krahets (krahets@163.com) */ #pragma once #include #include using namespace std; /* Definition for a singly-linked list node */ struct ListNode { int val; // 这里是节点的值 ListNode *next; // 这里是指向下一个节点的指针 ListNode(int x) : val(x), next(nullptr) { // 构造函数: 初始化节点的值为x, 指向下一个节点的指针为空 } }; /* Generate a linked list with a vector */ // 用一个vector生成一个链表 ListNode *vecToLinkedList(vector list) { ListNode *dum = new ListNode(0); // 创建一个虚拟节点 dum (值为0) ListNode *head = dum; // 创建一个指向虚拟节点的指针 head for (int val : list) { head->next = new ListNode(val); // 创建一个新节点, 值为val, 并将其指针赋给head->next head = head->next; // head指向下一个节点 } return dum->next; // 返回链表的头节点 } /* Get a list node with specific value from a linked list */ ListNode *getListNode(ListNode *head, int val) { // 遍历链表, 找到值为val的节点 while (head != nullptr && head->val != val) { head = head->next; // 指向下一个节点 } return head; // 返回找到的节点, 如果没有找到, 返回nullptr } /* Free the memory allocated to a linked list */ void freeMemoryLinkedList(ListNode *cur) { // 释放内存 ListNode *pre; while (cur != nullptr) // 当前节点不为空 { pre = cur; // pre指向当前节点 cur = cur->next; // 当前节点指向下一个节点 delete pre; // 释放pre指向的节点 } }