- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验报告
课程名称 数据结构
实验项目名称 有向图的强连通分量
班级与班级代码 14计算机实验班
实验室名称(或课室) 实验楼803
专 业 计算机科学与技术
任课教师
学 号:
姓 名:
实验日期: 2015年 12 月 03 日
广东财经大学教务处 制
姓名 实验报告成绩
评语:
指导教师(签名)
年 月 日
说明:指导教师评分后,实验报告交院(系)办公室保存。
一、实验目的与要求
采用邻接表存储的有向图。
二、实验内容
(1)创建N个节点的空图
DiGraph CreateGraph(int NumVertex)//创建一个N个节点的空图
{
DiGraph G;
G = malloc( sizeof( struct Graph ) );
if( G == NULL ) FatalError( Out of space!!! );
G-Table = malloc( sizeof( struct TableEntry ) * NumVertex );
if( G-Table == NULL )
FatalError( Out of space!!! );
G-NumVertex = NumVertex;
G-NumEdge = 0;
int i;
for (i=0;iNumVertex;i++)
{
G-Table[i].Header=MakeEmpty(NULL);
G-Table[i].V=i;
}
return G;
}
在图G上执行DFS,通过对DFS生成森林的后序遍历对G的顶点编号。
//后序DFS遍历图G,并将节点按后序遍历的顺序编号
int *PostDFS(DiGraph G)
{
int NumVertex=G-NumVertex;
int visited[NumVertex];
int i;
for (i=0;iNumVertex;i++)
{
visited[i]=0;//初始化,所有节点都未被访问过
}
int *post = malloc( sizeof( int ) * NumVertex );//用于存放后序DFS遍历时,节点的编号
if( post == NULL ) FatalError( Out of space!!! );
int postCounter=0;
//定义一个内嵌的DFS函数
void DFS (Vertex v)//从节点v出发执行DFS
{
visited[v]=1;//标记该节点被访问
Position P = Header( G-Table[v].Header );
if( !IsEmpty( G-Table[v].Header ) )
{
do//对节点v的所有邻接点递归调用DFS
{
P = Advance( P );
Vertex w=Retrieve( P );
if (visited[w]==0)//v的邻接点w未被访问过
{
DFS(w);
}
} while( !IsLast( P, G-Table[v].Header ) );
}
post[v]=postCounter;
postCounter++;
}
Vertex j;
for (j=0;jNumVertex;j++)//从每个节点出发进行DFS,因为图G有可能不是连通的
{
if (visited[j]==0) DFS(j);
}
return p
文档评论(0)