我知道下面的代码非常简单,但我一直困惑于如何实现它以获得正确的输出。感到很沮丧。
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);
我想做什么。
- 创建一个值为 10 的头节点
- 继续为其他节点添加值 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/