2 hade123123 hade123123 于 2017.08.31 20:24 提问

看到的博友帮忙详细注释下,

#include
#include

#define VertexNum 5 //最大顶点数

void CreateGraph(int (*edge)[VertexNum],int start,int end);
void displayGraph(int (*edge)[VertexNum]);
void DFT(int (*edge)[VertexNum],int *VertexStatusArr);
void DFTcore(int (*edge)[VertexNum],int i,int *VertexStatusArr);

int main(void)
{
//动态创建存放边的二维数组
int (*edge)[VertexNum]=(int(*)[VertexNum])malloc(sizeof(int)*VertexNum*VertexNum);
int i,j;
for(i=0;i<VertexNum;i++)
{
for(j=0;j<VertexNum;j++)
{
edge[i][j]=0;
}
}
//存放顶点的遍历状态,0:未遍历,1:已遍历,VertexStatusArr即为顶点
int* VertexStatusArr =(int *)malloc(sizeof(int)*VertexNum);
for(i=0;i<VertexNum;i++)
{
VertexStatusArr[i]=0;
}

printf("after init:\n");     //初始化
displayGraph(edge);     //打印
//创建图
CreateGraph(edge,0,3);
CreateGraph(edge,0,4);
CreateGraph(edge,3,1);
CreateGraph(edge,3,2);
CreateGraph(edge,4,1);

printf("after Create:\n");     //之后开始创建
displayGraph(edge);
//深度优先遍历
DFT(edge,VertexStatusArr);

free(edge);
return 0;

}

//创建图
void CreateGraph(int (*edge)[VertexNum],int start,int end)
{
edge[start][end]=1;

}

//打印存储的图
void displayGraph(int (*edge)[VertexNum],int start,int end)
{
int i,j;

for(i=0;i<VertexNum;i++)
{
    for(j=0;j<VertexNum;j++)
    {
        printf("%d",edge[i][j]);
    }
    printf("\n");

}

}

//深度优先遍历
void DFT(int (*edge)[VertexNum],int *VertexStatusArr)
{
printf("start DFT graph:\n");
int i;
for(i=0;i<VertexNum;i++) //为了遍历有断点的一个图
{
DFTcore(edge,i,VertexStatusArr);
}
printf("\n");

}

void DFTcore(int (*edge)[VertexNum],int i,int *VertexStatusArr)
{
if(VertexStatusArr[i]==1)
{
return ;
}
printf("%d",i);
VertexStatusArr[i]=1;

int j;
for(j=0;j<VertexNum;j++)
{
    if(edge[i][j]==1)
    {
       DFTcore(edge,j,VertexStatusArr);
    }
}

}

1个回答

caozhy
caozhy   Ds   Rxr 2017.09.01 00:04

你应该去请一个老师。贴出一坨代码张口就是注释下,这口气太大了一点。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Java 并发:volatile 关键字解析
在Java并发编程中,要想使并发程序能够正确地执行必须要保证三条原则:原子性、可见性和有序性。只要有一条原则没有被保证,就有可能导致线程安全性问题。volatile关键字被用来保证可见性,即保证共享变量的内存可见性以解决缓存一致性问题,同时其还会禁止进行指令重排序。volatile关键字主要用于使其他线程及时感知共享变量的修改并保证使用变量最新值,例如,用于修饰状态标记量和Double-Check(双重检查)中。
SCHOOLBLOG
界面不错 是博友的最佳选择
网络PING源码
PING源码,有详细注释,可帮忙同学们更好的理解PING
《系统集成项目管理工程师教程》67.6M pdf
传错了,大家不要下;管理看到,帮忙删除 传错了,大家不要下;管理看到,帮忙删除
动态分配图
自己写的圆形动态分配图,不过比例需要博友们先计算在传过去,不太好,博友们可自行修改
博客系统的设计与实现
注册、登录与注销; 博主对个人资料,博文,心情,留言,博友的管理功能; 访客留言,评论博文,评论心情,加博友等功能。 友情链接
搜狐狐友怎样查看朋友圈
搜狐狐友可以查看朋友圈其它用户分享的消息,但是需要先关注其它的用户,这样关注的用户的分享消息才会显示在您狐友的朋友圈中。而关注好友有下面二种办法。 1.      在狐友中搜狐用户,从搜索结果中关注。   用手按住屏幕向下拖动,会看到搜索框     在搜索框中输入用户名, 比如”晴空abc”     点击关注图标, 显示已关注  
snakeSongs
贪吃蛇(修改Ⅰ版)的背景音乐的音频文件,需要的博友可以下载
MySql--Font
自己平常使用的MySql--Font,推荐给广大的博友!
西游博客源代码
西游的博友们!快来了解下吧!