C ++ Linked List:变量问题

时间:2015-12-22 22:31:31

标签: list c++11

struct List
{
     Post *p;  //a random class
     List *next;    
};

我使用它来插入数据

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

为什么这不起作用?

抱歉我的英语不好,如果这太容易了......再次感谢

1 个答案:

答案 0 :(得分:1)

问题1:

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

while (help->next != NULL)
   help = help->next;

问题2:

设置help = new List();时,会丢失对列表中最后一个节点的引用。 help现在包含新的List实例,但您无法将其设置为链接列表中最后一个元素的next条目(您在while循环中搜索的元素)。< / p>

所以你可以继续:

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循环 - 否则您可能会混淆代码的哪一部分是循环的一部分而哪些不是。最终这是个人风格,但我建议初学者使用:

while (help->next != NULL) {
    help = help->next;
}