Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
LinkedList创建节点 我尝试实现C++的单链接。我创建了一个方法,可以创建一个节点并添加一个值并指向另一个节点,但我必须记住索引 如何在不记住索引的情况下改进代码和创建节点?(我要维护顺序=第一个创建的节点指向另一个节点等)_C++_Linked List - Fatal编程技术网

LinkedList创建节点 我尝试实现C++的单链接。我创建了一个方法,可以创建一个节点并添加一个值并指向另一个节点,但我必须记住索引 如何在不记住索引的情况下改进代码和创建节点?(我要维护顺序=第一个创建的节点指向另一个节点等)

LinkedList创建节点 我尝试实现C++的单链接。我创建了一个方法,可以创建一个节点并添加一个值并指向另一个节点,但我必须记住索引 如何在不记住索引的情况下改进代码和创建节点?(我要维护顺序=第一个创建的节点指向另一个节点等),c++,linked-list,C++,Linked List,类方法: 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->valu

类方法:

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;
}

您可以创建另一个名为Tail的指针来指向最后一个元素。这样,您就可以在不使用索引的情况下为列表添加值。 我称这个方法为append 无效附加(int-val){

还可以通过为节点创建构造函数来改进代码:

Class Node{
public:
    int value;
    Node * next;
    Node(Node * nextEle = NULL) {
        next = nextEle;
    }
    Node(int val,Node * nextEle = NULL) {
        value = val;
        next = nextEle;
    }
}

您可以创建另一个名为Tail的指针,指向最后一个元素。这样您就可以在不使用索引的情况下向列表中添加值。 我称这个方法为append 无效附加(int-val){

还可以通过为节点创建构造函数来改进代码:

Class Node{
public:
    int value;
    Node * next;
    Node(Node * nextEle = NULL) {
        next = nextEle;
    }
    Node(int val,Node * nextEle = NULL) {
        value = val;
        next = nextEle;
    }
}

我想,您已经有了两个成员变量:head是根节点,n是最后一个节点。您应该在构造函数中用NULL(对于c++11来说是NULL ptr)初始化这两个变量。然后,当您向列表中添加新值时,您可以只检查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;
    }
}

但是,如果希望在一个快速读取操作中查找列表大小而不遍历其所有节点,则索引变量可能非常有用。

我想,您已经有两个成员变量:head是根节点,n是最后一个节点。您应该使用NULL(对于c++11,为NULL ptr)初始化这两个变量然后在向列表中添加新值时,只需检查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;
    }
}

但是,如果希望在一次快速读取操作中查找列表大小而不遍历其所有节点,则索引变量可能非常有用。

Node*head;
成员变量放入
LinkkedList
类。使用
nullptr
初始化
head
。对照
nullptr
检查
head
Node*head;
成员变量放入
LinkkedList
类中。使用
nullptr
初始化
head
。对照
nullptr
检查
head