针对邻接矩阵的c语言描述(邻接矩阵创建有向图c语言)的内容, 嗨壳技术分享网今天给大家作出详细的解答吧!
今天给各位分享邻接矩阵的c语言描述的知识,其中也会对邻接矩阵创建有向图c语言进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
1、数据结构-图的邻接矩阵表示(C语言)
2、用C语言实现无向图的邻接矩阵,求大神看有什么问题
3、怎么用C语言将邻接矩阵转化为可达矩阵? (急)
4、用C语言实现 图的邻接表和邻接矩阵数据结构的定义、创建;图的深度优先遍历、广度优先遍历。
数据结构-图的邻接矩阵表示(C语言)
#includestdio.h
int min(int a,int b)
{
return ab?b:a;
}
int fun(int **a,int n,int begin,int end)
{
int m=~(131),i;
if(begin==end)
return 0;
else
{
for(i=0;in;i++)
if(a[begin][i]!=-1a[begin][i]!=0)
m=min(fun(a,n,i,end),m);
return m;
}
}
int main()
{
int n,i,js=0;
char begin,end;
int a[26][26],b[26]={0};
scanf(“%d”,n);
for(i=0;in;i++)
for(j=0;jn;j++)
{
scanf(“%d,a[i][j]”);
if(ija[i][j]!=-1)
b[i]++;
}
getchar();
scanf(“%c %c”,begin,end);
for(i=0;in;i++)
s=s+b[i];
printf(“%d
”,s);
for(i=0;in;i++)
printf(“%d
”,b[i]);
fun(a,n,begin-‘A’,end-‘A’);
return 0;
}
用C语言实现无向图的邻接矩阵,求大神看有什么问题
指针只是申明了,没有初始化。
void main()
{
Mgraph g;
Mgraph *G = g;
//…
}
或者
void main()
{
Mgraph g;
CreateMGraph(g);
}
CreateMGraph()里面的错误自己看吧。
PS:C语言标准要求main函数返回值为int类型。
怎么用C语言将邻接矩阵转化为可达矩阵? (急)
第一步,二重循环:邻接矩阵+单位矩阵
for i=0 to shangxian (i++)
for j=0 to shangxian (j++)
if i=j then a[i,j]=a[i,j]+1(单位矩阵对角线上的值为1)
nextj,i
第二步,所得矩阵和自身相乘(二重循环)。矩阵乘法需要些好多字,就不写了,相信你知道,至少也应该能查到。
第三步,相乘后得到的矩阵和为相乘前的矩阵比较,(也是二重循环)。如相等则完事,否则重复执行第二、三步。
如果自动执行二、三的相乘和比较过程,则需要在外面加一层条件循环。
用C语言实现 图的邻接表和邻接矩阵数据结构的定义、创建;图的深度优先遍历、广度优先遍历。
/*
程序1:邻接表的dfs,bfs
其中n是点的个数,m是边的个数,你需要输入m条有向边,如果要无向只需要反过来多加一遍即可。
*/
#include stdio.h
#include string.h
#define MAXM 100000
#define MAXN 10000
int next[MAXM],first[MAXN],en[MAXM],n,m,flag[MAXN],pd,dl[MAXN],head,tail;
void input_data()
{
scanf(“%d%d”,n,m);
int i,x,y;
for (i=1;i=m;i++)
{
int x,y;
scanf(“%d%d”,x,y);
next[i]=first[x];
first[x]=i;
en[i]=y;
}
}
void pre()
{
memset(flag,0,sizeof(flag));
pd=0;
}
void dfs(int x)
{
flag[x]=1;
if (!pd)
{
pd=1;
printf(“%d”,x);
}else
printf(” %d”,x);
int p=first[x];
while (p!=0)
{
int y=en[p];
if (!flag[y]) dfs(y);
p=next[p];
}
}
void bfs(int k)
{
head=0;tail=1;
flag[k]=1;dl[1]=k;
while (headtail)
{
int x=dl[++head];
if (!pd)
{
pd=1;
printf(“%d”,x);
}else printf(” %d”,x);
int p=first[x];
while (p!=0)
{
int y=en[p];
if (!flag[y])
{
flag[y]=1;
dl[++tail]=y;
}
p=next[p];
}
}
}
int main()
{
input_data();//读入图信息。
pre();//初始化
printf(“图的深度优先遍历结果:”);
int i;
for (i=1;i=n;i++)//对整张图进行dfs; 加这个for主要是为了防止不多个子图的情况
if (!flag[i])
dfs(i);
printf(“
————————————————————-
”);
pre();//初始化
printf(“图的广度优先遍历结果为:”);
for (i=1;i=n;i++)
if (!flag[i])
bfs(i);
printf(“
———————-end————————————
”);
return 0;
}
/*
程序2:邻接矩阵
图的广度优先遍历和深度优先遍历
*/
#include stdio.h
#include string.h
#define MAXN 1000
int n,m,w[MAXN][MAXN],flag[MAXN],pd,dl[MAXN];
void input_data()
{
scanf(“%d%d”,n,m);
int i;
for (i=1;i=m;i++)
{
int x,y;
scanf(“%d%d”,x,y);
w[x][0]++;
w[x][w[x][0]]=y;
}
}
void pre()
{
memset(flag,0,sizeof(flag));
pd=0;
}
void dfs(int x)
{
flag[x]=1;
if (!pd)
{
pd=1;
printf(“%d”,x);
}else printf(” %d”,x);
int i;
for (i=1;i=w[x][0];i++)
{
int y=w[x][i];
if (!flag[y]) dfs(y);
}
}
void bfs(int t)
{
int head=0,tail=1;
dl[1]=t;flag[t]=1;
while (headtail)
{
int x=dl[++head];
if (!pd)
{
pd=1;
printf(“%d”,x);
}else printf(” %d”,x);
int i;
for (i=1;i=w[x][0];i++)
{
int y=w[x][i];
if (!flag[y])
{
flag[y]=1;
dl[++tail]=y;
}
}
}
}
int main()
{
input_data();
printf(“图的深度优先遍历结果:”);
pre();
int i;
for (i=1;i=n;i++)
if (!flag[i])
dfs(i);
printf(“
—————————————————————
”);
printf(“图的广度优先遍历结果:”);
pre();
for (i=1;i=n;i++)
if (!flag[i])
bfs(i);
printf(“
—————————–end——————————–
”);
return 0;
}
关于邻接矩阵的c语言描述和邻接矩阵创建有向图c语言的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
以上【 邻接矩阵的c语言描述(邻接矩阵创建有向图c语言) 】是嗨壳技术分享网(www.heikehao.com)编辑整理。嗨壳技术分享网包含技术投稿、C语言、Excel、Java、Linux、网络安全和账号安全等丰富的栏目,并分享一些互联网安全技术知识和安全防护经验,帮助网友注重网络安全,让网络安全不再是问题。
原创文章,作者:语言我知,如若转载,请注明出处:https://www.heikehao.com/783.html