作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在阅读关于链表的一些基本操作时,我看到主要使用两种类型的循环
struct node {
int data;
struct node *next;
}*start=NULL,*tmp;
第一个循环的形式是
for(tmp=start;tmp->next!=NULL;tmp=tmp->next);
使用上面的循环,现在 tmp
指针指向列表中的最后一个节点
第二个循环的形式是
tmp=start;
while(tmp!=NULL)
{
// do something
}
我认为他们两个做同样的工作,但我不确定。有区别吗?
最佳答案
我想你的 while 循环是这样的。
temp=start;
while(temp!=NULL)
{
// do something
temp= temp->next;
}
在您的for 循环 代码中,当您离开for 循环 时,temp 不会指向NULL。 temp 指向链接列表的末尾。但是在 while 循环 的情况下,您的 temp 在退出 while 循环后指向 NULL 并且您没有 tail(除非您将 temp 分配给任何其他临时变量如果您想在后续步骤中使用它,请与您一起更改程序的逻辑。这是唯一的区别。除了没有太大区别。
您可以通过编写一个小程序并打印结果来检查它。我建议你这样做。
关于c - 使用循环遍历链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11463514/
我是一名优秀的程序员,十分优秀!