- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
离散数学(软件)学生实验报告
学 生 实 验 报 告
学 院: 软件与通信工程学院
课程名称: 离散数学(软件)
专业班级: 12软件1班
姓 名: 段谟毅
学 号: 0123747
学生实验报告(1)
学生姓名 段谟毅 学号 0123747 同组人 实验项目 图的矩阵表示和基本运算 □必修 □选修 □演示性实验 □验证性实验 □操作性实验 □综合性实验 实验地点 W101 实验仪器台号 指导教师 赵晓平 实验日期及节次 2013.12.12(四) 89A节 一、实验综述
1、实验目的及要求
(1)熟悉图在计算机中的矩阵表示;
(2)编写程序,根据输入的整数对,输出一个图形的邻接矩阵并求出各结点的出度和入度加强对知识的理解和运用能力到长度为3的通路的条数;(3)D中到长度为3的回路的条数。
认真完成实验题,能正确运行,提交实验报告并上传程序,实验报告要求写出操作步骤、结果、问题、解决方法、体会等。
2、实验仪器、设备或软件
计算机、VC++6.0、office、相关的操作系统等。
二、实验过程(实验步骤、记录、数据、分析)
实验原理:
设D=V,E是一个线图,,则n阶方阵称为D的邻接矩阵。其中:
邻接矩阵具有如下特点:
(1)邻接矩阵是一个布尔矩阵;
(2)无向线图的邻接矩阵是对称的;
(3)而有向线图的邻接矩阵不一定对称;
利用邻接矩阵可以很容易的完成结点的度数计算
写明具体实施的步骤,包括实验过程中的记录、数据和相应的分析
先定义两个结构体,一个用来存储邻接矩阵,一个用来存储结点相关信息。
#include iostream
#define MAX_LENGTH 100
using namespace std;
typedef struct{
int Matrix[MAX_LENGTH][MAX_LENGTH];
}AdjoinMatrix;
typedef struct{
int in_degree;
int out_degree;
}KnotInfo;
根据题意建立邻接矩阵。
void Creat_Matrix(AdjoinMatrix array, KnotInfo point[],int n){
int i, j;
cout 分别输入该图的各条边(先输入起点 后输入终点 中间用空格隔开 输入0为结束输入): endl;
while (true){
cin i;
if (i)
{
cin j;
array.Matrix[i - 1][j - 1] = 1;
}
else
break;
}
for (i = 0; i n;i++)
for (j = 0; j n; j++)
if (array.Matrix[i][j] != 1)
array.Matrix[i][j] = 0;
else
{
point[i].out_degree++;
point[j].in_degree++;
}
}
打印出各个节点的出度和入度
void In_degree_Matrix(KnotInfo point[],int n){
for (int i = 0; i n; i++)
{
cout 结点vi+1出度为: point[i].out_degree 入度为: point[i].in_degree endl;
}
cout endl;
}
创建一个函数,用来实现某两个结点距离为3的通路条数计算
int Route_Matrix(AdjoinMatrix array, int begin, int end,int n){
int h = 0;
for (int i = 0; i n; i++)
if (array.Matrix[begin][i])
for (int k = 0; k n; k++)
if (array.Matrix[i][k]array.Matrix[k][end])
h+=1;
return h;
}
5.最后打印矩阵和主函数
void Show_Matrix(AdjoinMatrix array,int n){
for (int i = 0; i n; i++)
{
for (int j = 0; j n; j++)
cout array.Matrix[i][j] ;
cout endl;
}
}
//打印矩阵;
void main(){
int n;
文档评论(0)