我正在尝试创建一个简单的单向链接列表。我从概念上理解它,但我一直试图创建一个。我知道那里有指南,但我通过反复试验来理解事情。
我的简单Contact
课程:
class Contact
{
std::string name, phNum;
Contact* next;
public:
void getInfo();
void printInfo();
};
此时,我要做的就是创建一个包含某些联系人的列表(即各种地址簿),然后打印出他们的信息。
根据我的理解,该列表应包含几个Contact
类型的唯一对象。
我的问题是,如何在堆中创建具有唯一地址的多个对象?我尝试了下面的内容,但它显然不起作用,因为所有指针都是相同的。
while(true)
{
Contact* newEntry= new Contact;
newEntry->getInfo();
// rest of the linking stuff
}
答案 0 :(得分:3)
要在循环中初始化多个联系人,您可能需要执行以下操作:
Contact *FirstOne = new Contact();
Contact *current = FirstOne;
while(...)
{
current->next = new Contact();
current = current->next;
//do stuff to current, like adding info
}
这样您就可以构建联系人列表了。之后*FirstOne
是第一个,*current
是列表的最后一个元素。另外,您可能希望确保构造函数在NULL旁边设置*以检测列表的结尾。
答案 1 :(得分:1)
好的,只需创建一个新联系人并将其链接到上一个联系人。它在概念上看起来像这样。
object
|
Pointer to next one -> object
|
Pointer to next one -> object
Contact* newEntry= new Contact();
newEntry->getInfo();
newEntry->next = new Contact();
newEntry->next->getInfo();
newEntry->next->next = new Contact();