C++ ListNode 结构体是一个常用的数据结构,用于构建链表。它的定义如下:

struct ListNode {
    int val;
    ListNode *next;
    ListNode(int x) : val(x), next(NULL) {}
};

创建 ListNode 对象

可以使用以下代码新建一个 ListNode 对象:

ListNode *newNode = new ListNode(5);  // 创建一个值为5的ListNode对象,并将其分配到堆上
// 或者
ListNode newNode(5);  // 创建一个值为5的ListNode对象,并将其分配到堆栈上

区别:

  • 堆分配:使用 new 关键字在堆上分配内存,需要手动释放内存,否则会造成内存泄漏。
  • 栈分配:在函数内部声明对象,系统自动在栈上分配内存,当超出作用域时对象会自动被销毁。

建议:

  • 如果需要在多个函数中使用对象,或者对象生命周期较长,建议使用堆分配。
  • 如果只需要在当前函数中使用对象,或者对象生命周期较短,建议使用栈分配。

注意:

  • 使用堆分配时,需要使用 delete 关键字释放内存。
  • 使用栈分配时,不需要手动释放内存,系统会自动进行内存回收。

示例

#include <iostream>

using namespace std;

struct ListNode {
    int val;
    ListNode *next;
    ListNode(int x) : val(x), next(NULL) {}
};

int main() {
    // 堆分配
    ListNode *head = new ListNode(1);
    head->next = new ListNode(2);
    head->next->next = new ListNode(3);
    
    // 遍历链表
    ListNode *current = head;
    while (current != NULL) {
        cout << current->val << ' ';
        current = current->next;
    }
    cout << endl;
    
    // 释放内存
    delete head->next->next;
    delete head->next;
    delete head;
    
    // 栈分配
    ListNode node1(4);
    ListNode node2(5);
    node1.next = &node2;
    
    // 遍历链表
    current = &node1;
    while (current != NULL) {
        cout << current->val << ' ';
        current = current->next;
    }
    cout << endl;
    
    return 0;
}

输出:

1 2 3
4 5
C++ ListNode 结构体对象创建方法详解

原文地址: https://www.cveoy.top/t/topic/mlaK 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录