我有两个类Person
和Node
。 以下是我所拥有的:
(请注意,所有内容都在一个 cpp 文件中,我只是将其分开以获得更好的视图。
头文件
#include <cstdio>
#include <iostream>
using namespace std;
人员类
class Person
{
int age;
string name;
void setage(int age)
{
this->age = age;
}
void setname(string name)
{
this->name = name;
}
int getage()
{
return this->age;
}
string getname()
{
return this->name;
}
};
节点类
class Node
{
public:
Node * Next;
Node * Prev;
Person * Data;
Node * Head;
Node * Tail;
Node()
{
Node * Head = NULL, *Tail = NULL;
}
void AppendNode(Node * pNode)
{
if (Head == NULL)
{ //if list is empty
Head = pNode; //make head point to pNode
pNode->Prev = NULL;
}
else
{
Tail->Next = pNode; //make tail point to pNode
pNode->Prev = Tail;
}
Tail = pNode; //tail is now pNode
pNode->Next = NULL; //pNode next now points to NULL
}
void display(Node * pNode)
{
for (pNode = Head; pNode != NULL; pNode = pNode->Next)
cout << pNode->Data << endl;
}
};
主要
int main()
{
Node * pNode;
//Add items to linked list
for (int i = 0; i < 10; i++)
{
pNode = new Node(); //allocate
pNode->Data->setage(i);
pNode->AppendNode(pNode);
}
pNode->display(pNode);
/* for(pNode = pHead; pNode != NULL; pNode = pNode->pNext)
cout<<pNode->nData<<endl;
*/
return 0;
}
我认为我做错了,但这就是我所拥有的。 我正在将数据附加到列表中。 您可以在在线编译器中看到此处的代码 https://onlinegdb.com/Hk87R0UvS
问题是我无法附加到列表中
看看你对Head
和Tail
的定义。实际上,您的代码上有几个。
首先,将 Head 和 Tail 定义为(非静态(成员。这意味着这些成员不会在节点之间共享,并且您的列表有多个头和多个尾(无论这可能意味着什么(。接下来,在构造函数中重新定义这些变量。您玷污临时变量并将其设置为 NULL 只是为了立即销毁它们。
因此,请进行一些修改。首先,将 Head 和 Tail 成员设为静态,以便在列表中的节点之间共享它们(顺便说一句,这意味着您计划在程序中只有一个列表(。不需要从构造函数中删除临时变量,但会明确您的意图。
还有一件事:你从不构造 Person,但你试图取消引用指针。