本是一个做图的建立和深度遍历,广度遍历的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
后记:写程序头脑一定要清醒,须知调试时很费时间的。。。。
本文分享了一个程序员在调试C程序时遇到的小bug,由于while循环误写成if语句,导致程序运行正常但输出后卡死。强调了在编程过程中保持头脑清醒的重要性,避免因细小错误造成的大麻烦。
4925

被折叠的 条评论
为什么被折叠?



