理解/创建链接列表

时间:2012-01-20 15:19:37

标签: c++ linked-list

我正在尝试创建一个简单的单向链接列表。我从概念上理解它,但我一直试图创建一个。我知道那里有指南,但我通过反复试验来理解事情。

我的简单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
}

2 个答案:

答案 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();