今天给各位分享怎样用c语言文件构造无向网的知识,其中也会对怎么建c语言文件进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
1、怎么用c语言生成一个固定顶点数和固定边数的无向图2、如何用C语言程序构造随机网络和BA无尺度网络3、C语言实现无向图4、关于c语言无向网的建立,求大神解答!5、C语言生成无向网
怎么用c语言生成一个固定顶点数和固定边数的无向图
#defineInfinity1000#defineMaxVertexNum35#defineMAX40#include#include#include#include#includetypedefstructarcell//边的权值信息{intadj;//权值}arcell,adjmatrix[MaxVertexNum][MaxVertexNum];//图的邻接矩阵类型typedefstructvexsinfo//顶点信息{intposition;//景点的编号charname[32];//景点的名称charintroduction[256];//景点的介绍}vexsinfo;typedefstructmgraph//图结构信息{vexsinfovexs[MaxVertexNum];//顶点向量(数组)adjmatrixarcs;//邻接矩阵intvexnum,arcnum;//分别指定顶点数和边数}mgraph;//全局变量intvisited[35];//用于标志是否已经访问过intd[35];//用于存放权值或存储路径顶点编号mgraphcampus;//图变量(大学校园)//(1)对图初始化mgraphinitgraph(){inti=0,j=0;mgraphc;c.vexnum=28;//顶点个数c.arcnum=39;//边的个数for(i=0;i”,c.vexs[d[s]].name);//输出该路径。s=0时为起点mprintf(“%s”,c.vexs[d[s]].name);//输出最后一个景点名(即顶点n的名字,此时s==k)printf(“\n\n”);}else{s=0;while(sc.vexnum){printf(“\n你所输入的景点编号不存在\n”);printf(“请重新输入:”);scanf(“%d”,v0);}//whilefor(v=0;v%s”,c.vexs[w].name);}printf(“—-%s”,c.vexs[v].name);printf(“\n总路线长为%d米\n\n”,d[v]);}//for}//shortestpath//(6)-(11)修改图的信息。包括建图、更新信息、删除、增加结点和边//(6)构造图的邻接矩阵intcreatgragh(mgraphc)//建图。以图的邻接矩阵存储图{inti,j,m,n;intv0,v1;intdistance;printf(“请输入图的顶点数和边数:\n”);scanf(“%d%d”,c.vexnum,c.arcnum);printf(“下面请输入景点的信息:\n”);for(i=0;i=0n=0){c.arcs[m][n].adj=distance;c.arcs[n][m].adj=c.arcs[m][n].adj;}}return1;}//creatgragh//(7)更新图的部分信息。返回值:1intnewgraph(mgraphc){intchangenum;//计数。用于记录要修改的对象的个数inti,m,n,t,distance,v0,v1;printf(“\n下面请输入你要修改的景点的个数:\n”);scanf(“%d”,changenum);while(changenumc.vexnum){printf(“\n输入错误!请重新输入”);scanf(“%d”,changenum);}for(i=0;ic.arcnum){printf(“\n输入错误!请重新输入”);scanf(“%d”,changenum);}printf(“\n下面请输入更新边的信息:\n”);for(i=1;i=0n=0){c.arcs[m][n].adj=distance;c.arcs[n][m].adj=c.arcs[m][n].adj;}}return1;}//newgraph
如何用C语言程序构造随机网络和BA无尺度网络
BA无尺度网络:它的特点是节点的度分布服从幂律分布。它是在 一个初级较小的的随机网络的基础上不
断地加入新的节点,并且每加入一个节点,则加入固定数目的优先连接的新的边,从而形成具有幂律指数
为3的度分布的网络。
(为简单化,以上两者都是只管点与点之间有无连接,有则为1,无则为0,保存在data[a][b]中,没有自环,即data[a][a]=0;具有双向性,即data[a][b]=data[b][a];且不需要求两点之间的距离!)
C语言实现无向图
可以用邻接矩阵表示法:
#define max 100
typedef struct
{
int vex[max];//存储顶点值,类型可以变
int edge[max][max];//存储顶点之间的关系,以1或者0表示,1为有边,0为无
int e,v;//vertex存储顶点数,edge存储边的条数,所以无向图1的个数是边的个数的两倍,谢谢。
}m;
关于c语言无向网的建立,求大神解答!
问题在scanf这个函数上头,解决办法是改变scanf的参数
代码如下:
#includestdio.h
#includestdlib.h
typedef struct{
char vex[10];
int arcs[10][10];
int vexnum,arcnum;
}MGraph;
int LocateVex(MGraph G,char v){
int i;
for(i=0;iG.vexnum;i++)
if(v==G.vex[i])
return i;
}
MGraph CreateUDN(){
MGraph G;
int i,j,k,w;
char v1,v2;
char s;
printf(“please input vexnum,arcnum:”);
scanf(“%d%d”,G.vexnum,G.arcnum);
scanf(“%c”,s);
printf(“please input each vex:”);
for(i=0;iG.vexnum;++i){
printf(“%d:”,i);
scanf(“%c%c”,G.vex[i],s);} //这里如果vexnum=2的话只会读入一次,为什么总会少一次???
for(i=0;iG.vexnum;++i)
for(j=0;jG.vexnum;++j)
G.arcs[i][j]=32767;
printf(“plese input the arc and its worth as v1,v2,w:\n”);
for(k=0;kG.arcnum;++k){
scanf(“%c%c%d%c”,v1,v2,w,s);
i=LocateVex(G,v1);
j=LocateVex(G,v2);
G.arcs[i][j]=w;
G.arcs[j][i]=w;
}
return G;
}
int main(){
MGraph G;
G=CreateUDN();
}
C语言生成无向网
#include”string.h”
#include”stdio.h”
#define MAX 50
typedef struct
{ char vexs[MAX];
int arcs[MAX][MAX];
int vexnum;
int arcnum;
} MGraph;
MGraph CreateUDN(MGraph G)
{
int i;
char c;
printf(“输入顶点和边数(用,分隔):”);
scanf(“%d,%d”,G.vexnum,G.arcnum);
getchar();
printf(“输入顶点所用符号:”);
for (i=0;iG.vexnum;)
{
c=getchar();
if (c!=’ ‘)
{
G.vexs[i]=c;
i++;
}
}
getchar();
return (G);
}
void main()
{ int i;
MGraph G;
G=CreateUDN(G);
printf(“%d%d\n”,G.vexnum,G.arcnum);
for (i=0;iG.vexnum;i++)
printf(“%c”,G.vexs[i]);
}
不知道是不是你想要的效果。、
怎样用c语言文件构造无向网的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于怎么建c语言文件、怎样用c语言文件构造无向网的信息别忘了在本站进行查找喔。