追加到双向链表并显示



我有两个类PersonNode。 以下是我所拥有的:

(请注意,所有内容都在一个 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

问题是我无法附加到列表中

看看你对HeadTail的定义。实际上,您的代码上有几个。

首先,将 Head 和 Tail 定义为(非静态(成员。这意味着这些成员不会在节点之间共享,并且您的列表有多个头和多个尾(无论这可能意味着什么(。接下来,在构造函数中重新定义这些变量。您玷污临时变量并将其设置为 NULL 只是为了立即销毁它们。

因此,请进行一些修改。首先,将 Head 和 Tail 成员设为静态,以便在列表中的节点之间共享它们(顺便说一句,这意味着您计划在程序中只有一个列表(。不需要从构造函数中删除临时变量,但会明确您的意图。

还有一件事:你从不构造 Person,但你试图取消引用指针。

相关内容

  • 没有找到相关文章

最新更新