我正在编写一个有关深度优先搜索算法的非常小的程序。在程序结束时,需要删除存储器。

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未初始化。

10-08 19:52