c语言实验:图的建立和深度遍历程序

谁能帮个忙,帮忙贴下图的建立和深度遍历的源程序?最近看到数据结构的图和树总是稀里糊涂的,书上全是算法,看了一点感觉没有。。。。... 谁能帮个忙,帮忙贴下图的建立和深度遍历的源程序?最近看到数据结构的图和树总是稀里糊涂的,书上全是算法,看了一点感觉没有。。。。 展开
 我来答
Danson_W
2010-12-07 · TA获得超过132个赞
知道答主
回答量:176
采纳率:0%
帮助的人:122万
展开全部
#include "stdio.h"
#include "string.h"
#define MAX 21

int legal(int x, int y);
void dfs(int i, int j);

char map[MAX][MAX];
int dir[4][2] = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}};
int w, h;
int ans;

int main(void)
{
while (scanf("%d%d", &w, &h) && (w + h))
{
int i, j;
int si, sj;
ans = 0;

memset(map, 0, sizeof(map));

for (i=0; i<h; i++)
{
scanf("%s", map[i]);

for (j=0; j<w; j++)
{
if (map[i][j] == '@')
{
si = i;
sj = j;
}
}
}

dfs(si, sj);

printf("%d\n", ans);
}

return 0;
}

int legal(int x, int y)
{
if (x < 0 || x > h || y < 0 || y > w)
{
return 0;
}

return 1;
}

void dfs(int i, int j)
{
int k;
int x, y;

++ans;
map[i][j] = '#';

for (k=0; k<4; k++)
{
x = i + dir[k][0];
y = j + dir[k][1];

if (legal(x, y) && map[x][y] == '.')
{
dfs(x, y);
}
}
}

这是一个简单的 深搜的例子!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
pohcb05
2010-12-10 · TA获得超过2009个赞
知道小有建树答主
回答量:968
采纳率:0%
帮助的人:205万
展开全部
#include <stdio.h>

int m,n;
bool w[100][100],visited[100];

void dfs(int i){
visited[i] = true;
printf("%d ",i);
for(int j = 0;j<n;j++)
if(w[i][j] && !visited[j])
dfs(j);
}

int main(){
scanf("%d%d",&m,&n);
int a,b;
for(int i = 0;i<m;i++){
scanf("%d%d,&a,&b);
w[a][b] = w[b][a] = true;
}
for(int i = 0;i<n;i++)
if(!visited[i])
dfs(i);
return 0;
}
你的串号我已经记下,采纳后我会帮你制作
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jegisk
2010-12-08 · TA获得超过819个赞
知道小有建树答主
回答量:632
采纳率:100%
帮助的人:454万
展开全部
#include <stdio.h>

int m,n;
bool w[100][100],visited[100];

void dfs(int i){
visited[i] = true;
printf("%d ",i);
for(int j = 0;j<n;j++)
if(w[i][j] && !visited[j])
dfs(j);
}

int main(){
scanf("%d%d",&m,&n);
int a,b;
for(int i = 0;i<m;i++){
scanf("%d%d,&a,&b);
w[a][b] = w[b][a] = true;
}
for(int i = 0;i<n;i++)
if(!visited[i])
dfs(i);
return 0;
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式