这两种说法有何不同?
How are the two statements different?
在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
然后,如果条件为真,你可以检查
visit[temp->key]==1
由于您使用的条件首先检查visit[temp->key]==1
而不检查temp是否为NULL,这会导致崩溃。
它的工作方式类似于您首先检查 while(temp!=NULL)
条件然后 if(visit[temp->key]==1)
.
的第一个条件
在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
然后,如果条件为真,你可以检查
visit[temp->key]==1
由于您使用的条件首先检查visit[temp->key]==1
而不检查temp是否为NULL,这会导致崩溃。
它的工作方式类似于您首先检查 while(temp!=NULL)
条件然后 if(visit[temp->key]==1)
.