本是一个做图的建立和深度遍历,广度遍历的c程序,却因其中一个小bug,我调试了几个小时:while循环写成了if语句,编译,运行都没有任何问题,但是输出数据后没有继续动了。卡死了。
int NextAdjVex(ALGraph graph,int v,int w){
if(v<0||v>=graph.vexnum){/*printf("没有改结点/n");*/return -1;}
else if(w<0||w>=graph.vexnum){/*printf("没有改结点/n");*/return -1;}
ArcNode * arcNode=graph.vertices[v].firstarc;//指针指向第一个结点
//if(arcNode&&((arcNode->adjvex)!=w))arcNode=arcNode->nextarc;//找到arcNode->adjvex=w为止
while(arcNode&&((arcNode->adjvex)!=w))arcNode=arcNode->nextarc;//找到arcNode->adjvex=w为止
//此时arcNode为指向w的指针,可能是第一个,可能是最后一个
if(arcNode->nextarc==NULL)return -1;//如果w已经是最后一个结点,返回-1
else return arcNode->nextarc->adjvex;//w不是最后一个结点,返回相当于w的下一个结点
}//NextAdjVex
后记:写程序头脑一定要清醒,须知调试时很费时间的。。。。