C++指针返回结构实现: Linked List

标签 c++ pointers memory-management struct linked-list

我知道下面的代码非常简单,但我一直困惑于如何实现它以获得正确的输出。感到很沮丧。

 struct node
 {
    node* p_next;
    int p_data;

    node(node* head, int data)
    {
        p_next = head;
        p_data = data;
    }

    explicit node(int data)
    {
        node(nullptr, data);
    }
 };

所以我在 C++ 中有这个结构来构造一些链接列表。

然后我有插入函数来将一些节点插入到该链表中

 node* insert_node(node* head, int data)
 {
    return new node(head, data);
 }

这里我开始变得愚蠢了。我如何实际创建一些具有实际值的链表?我很困惑如何首先构建一个列表并添加一些值。

我一直在尝试以下操作,但出现错误。

struct node node_01(1);
node* node_ptr_01 = new node(1);

我想做什么。

  1. 创建一个值为 10 的头节点
  2. 继续为其他节点添加值 20、34、32、123 等... 节点的随机值

我不知道如何初始化 head 指针并在其上添加值。

请帮助我。我将不胜感激。

最佳答案

在您的显式构造函数中,对node(nullptr, data);的调用位于本地空间中,并且结果在关闭后超出范围}

为什么不能只保存此构造函数中的值(而不是调用另一个构造函数?):

explicit node(int data)
{
    p_next = nullptr;
    p_data = data;
}

顺便说一句,您的 insert_node 函数运行良好:

int main() {

    // this testing code produces the correct result 
    // (assuming you fixed your explicit constructor):

    node node_01(9);
    node* node_ptr_01 = new node(1);

    cout << node_01.p_data << endl;
    cout << node_ptr_01->p_data << endl;

    node* n = insert_node(node_ptr_01, 5);
    cout << n->p_data;

    cin.get();
}

关于C++指针返回结构实现: Linked List,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18348574/

相关文章:

c++ - C 样式转换导致 SIGILL,dynamic_cast ok

c++ - 从类 C++ 外部调用指向成员方法的成员指针

c++ - 我们可以给指针无符号字符数组赋值吗?

c - malloc 返回类型 void * 的意图/好处是什么?

c - 应用程序内存优化

c++ - c++ vector<vector<int>> 如何管理内存

c++ - 在循环体内声明一个变量有什么缺点吗?

c++ - (不是)指针调整破坏了我的一天和堆? (C++)

c++ - JNI 是否为 native 代码引入了额外的线程?

c - 我的代码中出现段错误。