c++ - 链表创建节点

标签 c++ linked-list

我试图实现 C++ 单链接。我创建了一个方法来创建一个节点并添加一个值并指向另一个节点但我必须记住索引。

  • 如何在不记住索引的情况下改进代码和创建节点? (我想维护顺序 = 第一个创建的节点指向另一个等)

类方法:

void LinkedList::addValue ( int val )
{
    if ( ! index ) 
    {
      n = new Node();
      head = n;
      n->value = val;
      n->next = NULL;
    }
    else
    {
      n->next = new Node( );
      n = n->next;
      n->value = val;
    }

  ++index;
}

最佳答案

我想,您已经有两个成员变量:head 是根节点,n 是最后一个节点。您应该在构造函数中使用 NULL(c++11 的 nullptr)初始化它们。然后,您可以在向列表中添加新值时检查是否 n==NULL

LinkedList::LinkedList():head(NULL),n(NULL)
{}

void LinkedList::addValue ( int val )
{
    if (n==NULL) 
    {
      n = new Node();
      head = n;
      n->value = val;
      n->next = NULL;
    }
    else
    {
      n->next = new Node( );
      n = n->next;
      n->value = val;
    }
}

但是,如果您想在一次快速读取操作中找到列表大小而不遍历其所有节点,则索引变量会很有用。

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

相关文章:

c++ - 如何编写传递可变大小的匿名 std::array 的推导指南?

c - Scanf() 取 0 而不是 Float 键盘输入

c++ - 如何从 Visual Studio IntelliSense 提示中隐藏私有(private)重载函数?

c++ - 如何根据参数化类型的特定成员的类型对模板类函数进行不同的实现

c++ - 初学者在 2D 网格上与 Lee 算法作斗争

c - LIST_HEAD_INIT 和 INIT_LIST_HEAD 之间的区别

c++ - 如何返回指向链表中最大值的指针?

c - 错误: Expected expression before 'DATA/* : typedef struct DATA DATA */

c - C 中的链表 - 插入名称会使程序崩溃

c++ - 如何使 QTextEdit 看起来已禁用