这两个陈述有何不同?

时间:2015-04-02 11:42:52

标签: c compare depth-first-search

在DFS遍历中,遍历adjlist以获取下一个未访问的顶点(在数组'1'中标记为int visit[100])并通过从堆栈弹出下一个值(= i)进行回溯)。

第一个给了我正确答案,第二个给程序崩溃了。

2个陈述有何不同?

array=graph*   //psuedo code 
link=adjList*
head=adjListNode*

while(temp!=NULL)         //temp=array->link[i].head->next
    if(visit[temp->key]==1)  //checking if visited
            temp=temp->next;
        else
            break;

 while(visit[temp->key]==1 && temp!=NULL)
        temp=temp->next;

1 个答案:

答案 0 :(得分:1)

使用

while( temp!=NULL && visit[temp->key]==1)

首先你需要检查temp!=NULL然后,如果条件为真,你可以检查
visit[temp->key]==1

您使用的条件首先检查visit[temp->key]==1而不检查temp是否为NULL,这会导致崩溃 它的工作方式类似于您首先检查while(temp!=NULL)条件然后if(visit[temp->key]==1)的第一个条件。