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
为什么这不起作用?
抱歉我的英语不好,如果这太容易了......再次感谢
答案 0 :(得分:1)
问题1:
在您的while循环中,您在help
不是NULL
时重复,因此当help
为NULL
时您将离开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;
}