显示链表

时间:2014-05-19 14:32:25

标签: c++ linked-list

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

1 个答案:

答案 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;