我是C ++新手并编写链表程序。我的代码工作正常,我只需要帮助理解遍历概念。
以下是我的代码。我怀疑的是,当我们遍历列表以在最后插入时。我们将条件while (list->next != NULL)
设置为指向列表的最后一个节点。现在,当我试图显示列表并将条件设置为相同时,它会打印到倒数第二个节点,当我将其更改为while (list->next == NULL)
时,它不会打印任何内容。我在Google上找到了以下代码。谁能告诉我3种情况有何不同?另外,为什么相同的while
条件不适合用于插入的打印?
void link_list :: print_list()
{
if (head==NULL)
{
cout<< "Empty list"<< endl;
}
else
{
int count = 0;
list=head;
//while (list->next != NULL)-- printed only till the second last node
// while (list->next == NULL) didn't print anything
while (list != NULL)
{
count++;
cout << "Node " << "value " << endl;
cout << count << " " << list->num << endl;
list = list->next;
}
}
}
答案 0 :(得分:1)
while(list-&gt; next!= NULL)表示:如果中有NOTHING list-&gt;接下来就离开while循环。也就是说,如果此元素后面有一个元素,则打印当前元素。
while(list-&gt; next == NULL)表示:如果NEXT为NULL,则执行is 在while循环中。 aka,仅适用于一个元素列表。
while(list!= NULL)表示:如果我目前正在寻找的是a 列表,然后打印出来。
插入列表时,您有4个案例。空列表,插入中间,插入到最后,插入前面。对于插入,您必须考虑所有这些场景并使用相应的功能。
insert语句的完整逻辑:
if(list!=null)
{
if(list->next==null)
list->next=newelement;
else
newelement->next=list->next;
list->next=newelement;
}
else
list=newelement;