我正在编写一个有关深度优先搜索算法的非常小的程序。在程序结束时,需要删除存储器。
for(int i = 0; i < V; i++) {
Vertex* temp1, *temp2 = graph->adjacentList[i];
while(temp1 != NULL) {
temp2 = temp1->next;
delete temp1;
temp1 = temp2;
}
}
此代码删除图形的相邻列表。该代码可以编译和运行,但是
运行时错误。错误消息是
请查看另一段代码:
for(int i = 0; i < V; i++) {
Vertex* temp1 = graph->adjacentList[i];
Vertex* temp2 = graph->adjacentList[i];
while(temp1 != NULL) {
temp2 = temp1->next;
delete temp1;
temp1 = temp2;
}
}
此代码可以编译并运行,没有任何错误消息!
唯一的区别是声明。至少对于我来说,这很奇怪。
任何人都可以提出一个主意吗?
最佳答案
Vertex* temp1, *temp2 = graph->adjacentList[i];
相当于
Vertex *temp1;
Vertex *temp2 = graph->adjacentList[i];
您会看到为什么出现错误,指出
temp1
未初始化。