List C++;链表:可变问题

List C++;链表:可变问题,list,c++11,List,C++11,我用它来插入数据 struct List { Post *p; //a random class List *next; }; 为什么这不起作用 对不起,我的英语不好,如果这太容易的话。。再次感谢问题1: 在while循环中,您重复whilehelp不是NULL,因此当help是NULL时,您将离开while循环。您希望保留列表中的最后一个节点。最后一个节点是help->next==NULL的节点。因此,while循环应该如下所示: List *help; hel

我用它来插入数据

struct List
{
     Post *p;  //a random class
     List *next;    
};
为什么这不起作用

对不起,我的英语不好,如果这太容易的话。。再次感谢

问题1:

在while循环中,您重复while
help
不是
NULL
,因此当
help
NULL
时,您将离开while循环。您希望保留列表中的最后一个节点。最后一个节点是
help->next==NULL
的节点。因此,while循环应该如下所示:

List *help;
help=(*leaf)->start; //leaf is a node where is the start of the list
while(help!=NULL)
    help=help->next;
help=new List;
help->p=new Post()
help->next=NULL
问题2:

当您设置
help=newlist()时您丢失了对列表中最后一个节点的引用<代码>帮助
现在包含新的
列表
实例,但不能将其设置为链接列表中最后一个元素(在while循环中搜索的元素)的
下一个
条目

因此,您可以继续:

while (help->next != NULL)
   help = help->next;
注意:您应该使用大括号编写while循环,否则您可能会混淆代码的哪部分是循环的一部分,哪部分不是循环的一部分。最终,这是一种个人风格,但我建议初学者:

help->next = new List(); // allocate node and set it as next
help = help->next;       // now you can set help to the new node
help->p = new Post();
help->next = NULL;
while (help->next != NULL) {
    help = help->next;
}