c++ - 理解/创建链表

标签 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
}

最佳答案

要在循环中初始化多个联系人,您可能需要执行以下操作:

Contact *FirstOne = new Contact();
Contact *current = FirstOne;
while(...)
{
    current->next = new Contact();
    current = current->next;
    //do stuff to current, like adding info
}

这样您就可以建立您的联系人列表。之后,*FirstOne 是列表中的第一个元素,*current 是列表中的最后一个元素。另外,您可能需要确保构造函数将 *next 设置为 NULL 以检测列表的末尾。

关于c++ - 理解/创建链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8943631/

相关文章:

c++ - 无法在 C++ 错误中实例化抽象类

c++ - 使用函数创建链表时出现段错误

algorithm - 如何按其值对 ListNode(链接)进行排序?

c++ - 使用 boost 创建一个始终返回 true 的 lambda 函数

c++ - 使用矩阵模板库的矩阵乘法(MTL 2)

C 段错误 - 链表

java - 自定义链表存在问题并应用于 JTable

java - 了解家庭作业

c++ - 主 .cpp 文件之外的显式模板实例化

c++ - 程序因未知原因退出 (0xC0000005)