第一范文网 - 专业文章范例文档资料分享平台

数据结构实验———图实验报告

来源:用户分享 时间:2025/5/26 3:51:51 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

数 据 结 构

实 验 报 告

目的要求

1.掌握图的存储思想及其存储实现。

2.掌握图的深度、广度优先遍历算法思想及其程序实现。 3.掌握图的常见应用算法的思想及其程序实现。

实验内容

1.键盘输入数据,建立一个有向图的邻接表。 2.输出该邻接表。

3.在有向图的邻接表的基础上计算各顶点的度,并输出。 4.以有向图的邻接表为基础实现输出它的拓扑排序序列。 5.采用邻接表存储实现无向图的深度优先递归遍历。

6.采用邻接表存储实现无向图的广度优先遍历。

7.在主函数中设计一个简单的菜单,分别调试上述算法。

源程序:

主程序的头文件:队列 #include <> #include <> #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0

#define OVERFLOW -2 typedef int QElemType;

typedef struct QNode{ ata='A'+i;

G->vertices[i].firstarc=NULL; }

for (i=0;ivexnum;)

{ printf(\请输入顶点的数组坐标(若退出,请输入-1):\ scanf(\ if(i==-1) break;

printf(\请输入顶点所指向下一个顶点的数组坐标:\ scanf(\

s=(ArcNode *)malloc(sizeof(ArcNode)); s->adjvex=j;

s->nextarc=G->vertices[i].firstarc; G->vertices[i].firstarc=s; } }

5cata);

for(p=[i].firstarc;p;p=p->nextarc) printf(\ printf(\

} }

egree=0;G->vertices[i].indegree=0;}irstarc;p;p=p->nextarc) {G->vertices[i].degree++;

G->vertices[p->adjvex].degree++; G->vertices[p->adjvex].indegree++; } }

void print_degree(ALGraph G) {

int i;

printf(\ for (i=0;i<;i++)

printf(\ [i].degree,[i].indegree); printf(\ }

ndegree) stack[top++]=i; count=0;

while(top!=0) {

i=stack[--top];

if (count==0) printf(\ else printf(\ count++;

for(p=[i].firstarc;p;p=p->nextarc)

if (![p->adjvex].indegree)stack[top++]=p->adjvex; }

if (count

irstarc) return 0;

else return[v].firstarc->adjvex); }

irstarc;

while(p->adjvex!=u) p=p->nextarc; 出该有向图的度和入度 4.输出该有向图拓扑排序序列 \\n\

printf(\创建一个无向图的邻接表 6.深度优先递归遍历该无向图\\n\

printf(\广度优先遍历该无向图 0.退出 \\n\ printf(\请输入选择: \ scanf(\ switch(select){ case 1:

printf(\创建一个有向图的邻接表:\\n\

creat_link(&G); break; case 2:

printf(\输出该邻接表:\\n\ visit(G); break; case 3:

printf(\输出该有向图的度和入度:\\n\ cacu(&G);

print_degree(G); break; case 4:

printf(\输出该有向图拓扑排序序列:\\n\

if(!TopologiSort(G))printf(\ break; case 5:

printf(\创建一个无向图的邻接表: \\n\ creat_link(&G); break; case 6:

printf(\深度优先递归遍历该无向图: \\n\ DFSTraverse(G); break; case 7:

printf(\广度优先遍历该无向图:\\n\ BFSTraverse(G); break; case 0: break; default:

printf(\输入选项错误!重新输入!\\n\ }

}while(select); }

运行结果截图:

1. 主菜单界面:

2.创建一个有向图的领接表

3.输出该邻接表

4. 在有向图的邻接表的基础上计算各顶点的度,并输出。

5. 输出它的拓扑排序序列

6. 输出所建无向图的邻接表

搜索更多关于: 数据结构实验———图实验报告 的文档
数据结构实验———图实验报告.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c6d5b05c1u49o8y29wt5t6vudb8bhn000z67_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top