在temp!=NULL
(用于遍历列表的临时变量(之前遍历链接列表和temp->next!=NULL
之间有什么区别?
while(temp!=NULL)
{
cout<<temp->data;
temp=temp->next;
}
while(temp->next!=NULL)
{
cout<<tmep->data;
temp=temp->next;
}
区别在于第一个将在链表中打印所有节点的数据。但第二个将打印除最后一个节点外的所有节点数据。由于最后一个节点的下一个指针将指向null,因此while循环内的条件将为false,并且它不会为最后一个结点执行。
我给出的主要答案是,上述算法可以同样用于遍历链表。这就是区别。
第一个算法:指针先移动。然后,它检查当前节点。如果它不等于null,它会输出值并将指针前进到下一个节点。遍历完成后,指针指向一个空值。
第二个算法:指针检查下一个节点。如果它不等于null,它将指针前进到它并输出值。遍历完成后,指针指向最后一个节点。
当您使用第二种方法时,请确保在启动while循环之前临时变量不为NULL。若列表中并没有项目,那个么在while循环的第一行尝试访问temp->next
时会出现异常。
另一方面,即使临时变量为NULL,第一种方法也不会导致此错误。