c-这两种说法有何不同



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

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

这两种说法有何不同

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;

使用

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

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

由于您首先在不检查temp是否为NULL的情况下检查visit[temp->key]==1时使用的条件会导致崩溃
它的工作原理类似于您的第一个条件,即首先检查while(temp!=NULL)条件,然后检查if(visit[temp->key]==1)

相关内容

  • 没有找到相关文章

最新更新