前言
提示:以下是本篇文章正文内容,下面案例可供参考
一、定义一个clearmap初始化函数
1.相关代码展示
代码如下(示例):
memset函数的作用就是把你快连续的内存初始化为你给的值。
void clearmap()//初始化
{
ff = true;
memset(b, 0, MAX*sizeof(int));//将b数组中的 MAX个int型内存空间全初始化为零
memset(c, 0, MAX*sizeof(int));//将c数组中的MAX个int型内存空间全部初始化为零
for (int i = 0; i < m; i++)
{
visit[i] = false;// 将节点未访问标记为没访问
for (int j = 0; j < m; j++)
{
a[i][j] = 0;
c[i][j] = 0;
}
}
}
二、定义randcreat函数用于随机生成图函数,能够实现计算各结点的度,并输出矩阵
1.相关代码展示
INT_MAX是一个很大的整形数
代码如下(示例):
void randcreat() //随机生成图,计算各结点的度,并输出矩阵
{
int ra, rb; //两个随机数,用于记录各节点的度
int count = 0; //只有m条边,count来记录当前生成的边数
srand(time(0));//按照当前的时间值种下随机种子数,使得任意时刻产生的随机数都是不同的
while (count<n)
{
ra = rand() % m;//生成数组随机位置
rb = rand() % m;
while (ra == rb)
rb = rand() % m;//这两个随机数必须是不相等
if (!a[ra][rb])
{
a[ra][rb] = a[rb][ra] = rand() %9 + 1;//对称生成邻接矩阵,随机生成权值,
count++;
b[ra]++;
b[rb]++;
}
}
for (int i = 0; i<m; i++)
{
for (int j = 0; j<m; j++){
if(a[i][j]==0){
a[i][j]=INT_MAX;// INT_MAX是一个很大的整形数
a[i][i]=0;
}
cout << " " << a[i][j] << " ";
}
cout << endl;
}
}