📄 aja_mar.c
字号:
//程序实例8_1
//邻接矩阵的生成
#include<stdio.h>
#include<stdlib.h>
#define Infinite 9999
#define Max 100
int A[Max][Max];
void adjm(int v[][2],int w[],int n,int e,int t)
{
int k,m=0;
for(k=1;k<=e;k++)
{
if(t>2) //带权图
{
A[v[m][0]][v[m][1]]=w[m];
if(t==3) //带权无向图
A[v[m][1]][v[m][0]]=w[m];
}
else //非带权图
{
A[v[m][0]][v[m][1]]=1;
if(t==1) //无向图
A[v[m][1]][v[m][0]]=1;
}
m++;
}
}
void Init(int n,int t)//矩阵初始化
{
int i,j;
if(t>2)
for(i=0;i<=n;i++)
for(j=0;j<=n;j++)
A[i][j]=Infinite;
else
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
A[i][j]=0;
}
void Print(int n)
{
int i,j;
for(i=1;i<=n;i++)
{
printf("\n");
for(j=1;j<=n;j++)
printf("%-6d",A[i][j]);
}
printf("\n");
}
void main()
{
int n,e,t;//无向图、有向图、带权无向图及带权有向图的t分别为1、2、3、4
int d1[][2]={{1,2},{1,3},{1,5},{2,4},{2,6},{3,6},{5,6}};
int d2[][2]={{1,2},{1,3},{2,4},{3,2},{4,6},{5,1},{6,3},{6,4},{6,5}};
int d3[][2]={{1,2},{2,3},{2,5},{4,1},{4,3},{5,4}};
int w[Max],w3[]={10,8,15,5,2,23};
printf("\n图8.1.1无向图G1的邻接矩阵:\n");
n=6; e=7; t=1;
//Init(n);
adjm(d1, w, n, e, t);
Print(n);
printf("\n图8.1.2有向图G2的邻接矩阵:\n");
n=6; e=9; t=2;
Init(n,t);
adjm(d2, w, n, e, t);
Print(n);
printf("\n图8.1.8带权有向图G3的邻接矩阵:\n");
n=5; e=6; t=4;
Init(n,t);
adjm(d3, w3, n, e, t);
Print(n);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -