首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >temp!=NULL和temp->next!=NULL之间的差异?

temp!=NULL和temp->next!=NULL之间的差异?
EN

Stack Overflow用户
提问于 2022-09-12 15:08:54
回答 2查看 71关注 0票数 0

//我正在创建一个链接列表并将其遍历

但是在函数的while条件下,我对W加热器将temp!=NULL或temp!=NULL弄混了。两者表现出不同的产出。请帮帮忙。为什么他们不一样。。。。。。

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>
 
struct brick
{
    int data;
    struct  brick * next; // self refrencing pointer
};

void printval(struct brick * temp);

void printval(struct brick * temp)
{ 
    int i = 0;
    while (temp != NULL)
    {    
        printf("elements at index %d=%d \n", i, temp->data);
        temp = temp->next;
        i++;
    }
}

int main()
{
    struct brick *first, *second, *third;
    first = (struct brick *)malloc(sizeof(struct brick));
    second = (struct brick *)malloc(sizeof(struct brick));
    third = (struct brick *)malloc(sizeof(struct brick));

    first->data = 1;
    first->next = second;
 
    second->data = 2;
    second->next = third;
 
    third->data = 3;
    third->next = NULL;
 
    printval(first);
    
    return 0;
} 
EN

回答 2

Stack Overflow用户

发布于 2022-09-12 15:36:07

我总是倾向于在循环之后想到我在temp中存储的内容,以帮助我确定我想要使用的条件。例如:

i) while(temp!=NULL) { }

中断循环的条件是temp ==空。因此,在循环之后,您的temp立即指向NULL。

ii)而(temp->next!=NULL) {}

让您脱离while循环的条件是,当temp->next==NULL,退出时,即当temp指向链接列表中的最后一个节点时退出。因此,一旦我退出while循环,temp就会指向最后一个元素。

因此,如果希望整个列表(包括链接列表中的最后一个元素)运行循环,则使用(temp!=NULL),但如果希望循环运行到第二个最后一个元素,则通常使用(temp->next=NULL)

票数 3
EN

Stack Overflow用户

发布于 2022-09-12 15:13:31

如果您检查temp != NULL,当您到达列表的末尾时,您的循环将终止。如果您检查temp->next != NULL,则循环将停止在列表中的最后一个元素的旁边。

它可能有助于可视化你的名单。

代码语言:javascript
复制
+--------------------+
| First              |
| int data           |
| struct brick *next --\
+--------------------+ |
      /----------------/
      |
      v
     +--------------------+     
     | Second             |
     | int data           |
     | struct brick *next --\
     +--------------------+ |     
           /----------------/
           |
           v
          +--------------------+     
          | Second             |
          | int data           |    
          | struct brick *next --\  
          +--------------------+ |
                                 |
                                 v
                                +------+
                                | NULL |
                                +------+
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73691392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档