当前位置:首页 » 编程语言 » 图的建立c语言

图的建立c语言

发布时间: 2025-04-08 06:46:26

① 在c语言编程实现建立无向图的邻接表,输出某个点的邻接点~!

用矩阵表示无向图的,设有M个节点,则建立一个MXM矩阵,对每个顶点添加它的邻接点,即每行中对于有标记的列为该行顶点的邻接点。

② 用C语言实现 图的邻接表和邻接矩阵数据结构的定义、创建;图的深度优先遍历、广度优先遍历。

/*
程序1:邻接表的dfs,bfs
其中n是点的个数,m是边的个数,你需要输入m条有向边,如果要无向只需要反过来多加一遍即可。
*/
#include<stdio.h>
#include<string.h>
#defineMAXM100000
#defineMAXN10000
intnext[MAXM],first[MAXN],en[MAXM],n,m,flag[MAXN],pd,dl[MAXN],head,tail;

voidinput_data()
{
scanf("%d%d",&n,&m);
inti,x,y;
for(i=1;i<=m;i++)
{
intx,y;
scanf("%d%d",&x,&y);
next[i]=first[x];
first[x]=i;
en[i]=y;
}
}

voidpre()
{
memset(flag,0,sizeof(flag));
pd=0;
}

voiddfs(intx)
{
flag[x]=1;
if(!pd)
{
pd=1;
printf("%d",x);
}else
printf("%d",x);
intp=first[x];
while(p!=0)
{
inty=en[p];
if(!flag[y])dfs(y);
p=next[p];
}
}

voidbfs(intk)
{
head=0;tail=1;
flag[k]=1;dl[1]=k;
while(head<tail)
{
intx=dl[++head];
if(!pd)
{
pd=1;
printf("%d",x);
}elseprintf("%d",x);
intp=first[x];
while(p!=0)
{
inty=en[p];
if(!flag[y])
{
flag[y]=1;
dl[++tail]=y;
}
p=next[p];
}
}
}

intmain()
{
input_data();//读入图信息。
pre();//初始化
printf("图的深度优先遍历结果:");
inti;
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------------------------------------ ");
return0;
}
/*
程序2:邻接矩阵
图的广度优先遍历和深度优先遍历
*/
#include<stdio.h>
#include<string.h>
#defineMAXN1000

intn,m,w[MAXN][MAXN],flag[MAXN],pd,dl[MAXN];

voidinput_data()
{
scanf("%d%d",&n,&m);
inti;
for(i=1;i<=m;i++)
{
intx,y;
scanf("%d%d",&x,&y);
w[x][0]++;
w[x][w[x][0]]=y;
}
}

voidpre()
{
memset(flag,0,sizeof(flag));
pd=0;
}

voiddfs(intx)
{
flag[x]=1;
if(!pd)
{
pd=1;
printf("%d",x);
}elseprintf("%d",x);
inti;
for(i=1;i<=w[x][0];i++)
{
inty=w[x][i];
if(!flag[y])dfs(y);
}
}

voidbfs(intt)
{
inthead=0,tail=1;
dl[1]=t;flag[t]=1;
while(head<tail)
{
intx=dl[++head];
if(!pd)
{
pd=1;
printf("%d",x);
}elseprintf("%d",x);
inti;
for(i=1;i<=w[x][0];i++)
{
inty=w[x][i];
if(!flag[y])
{
flag[y]=1;
dl[++tail]=y;
}
}
}
}

intmain()
{
input_data();
printf("图的深度优先遍历结果:");
pre();
inti;
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-------------------------------- ");
return0;
}

③ 怎么用codeblocks编写c语言的图形程序

在codeblocks中,可以通过集成EGE库,来实现C语言图形程序的编写,具体方式如下:

一、安装:

1、下载ege安装包;

2、将安装包解压

3、把压缩包里include目录下所有文件,复制到编译器安装目录下的include目录内,例如D:MinGWinclude;

4、把lib目录下对应编译器名目录下的文件,复制到编译器安装目录下的lib目录内,例如D:MinGWlib。

二、建立工程:

只要第1步做好以后,其实已经安装好ege了,剩下的只是配置build option.
点击file-new-projects,选择Console application:

热点内容
魅族便签加密 发布:2025-04-08 12:12:33 浏览:924
固态重建编译器 发布:2025-04-08 12:09:17 浏览:697
小白编译IPK 发布:2025-04-08 12:09:09 浏览:644
php刷新缓存 发布:2025-04-08 11:58:40 浏览:590
安卓和苹果系统哪个更耐用 发布:2025-04-08 11:56:26 浏览:240
长城宽带100m上传速度 发布:2025-04-08 11:46:56 浏览:702
西安交大编译原理全文 发布:2025-04-08 11:46:56 浏览:440
解压轻松站 发布:2025-04-08 11:41:09 浏览:809
三国杀激活码破解算法 发布:2025-04-08 11:40:26 浏览:204
sql中的insert 发布:2025-04-08 11:30:19 浏览:176