(乐天灵魂的日志) atian.dpnet.com.cn
登录区
日志分类
日历
日 志 信 息
我 的 公 告
我创建的部落
我参加的部落
最 新 日 志
最 新 评 论
最 新 留 言
友 情 链 接
日志

乐天灵魂转帖的日志:无向图的深度优先遍历 (转载) [ 2007-5-10 16:54:28 |  乐天灵魂 ] 
 
无向图的深度优先遍历

 

/************************************************/
/* 程序功能:无向图的深度优先遍历 */
/* 程序编写:罗盛才 */
/* 编写时间:2005年5月24日 */
/************************************************/
#i nclude <stdio.h>
#i nclude <stdlib.h>
#define N 30

typedef struct node
{
int vno;
struct node *next;
}edgeNode;

typedef edgeNode* Graph[N];

int Create_list(Graph g)
{
int vn,en,k,i,j;
edgeNode *p;

printf('输入顶点数:\n');
scanf('%d',&vn);
printf('输入边数:\n');
scanf('%d',&en);

for(k=0;k<vn;k++)
g[k]=NULL;
for(k=0;k<en;k++)
{
printf('输入边:');
scanf('%d%d',&i,&j);

p=(edgeNode*)malloc(sizeof(edgeNode));
p->vno=j;
p->next=g[i];
g[i]=p;

p=(edgeNode*)malloc(sizeof(edgeNode));
p->vno=i;
p->next=g[j];
g[j]=p;
}
return vn;
}

int visited[N];
void dfs(Graph g,int i)
{
edgeNode *t;
printf('%4d',i);
visited[i]=1;
t=g[i];
while(t!=NULL)
{
if(visited[t->vno]==0)
dfs(g,t->vno);
t=t->next;
}
}

void main()
{
Graph g;
Create_list(g);
dfs(g,0);
}

zhousqy(标准C匪徒) 于 2005-6-14 15:50:58

void shortpath_floyd(graph g)
{ int path[maxlen][maxlen];
int short3[maxlen][maxlen];/*&#65416;&#65384;&#65430;&#65397;*/
int i,j,k;
for(i=0;i<g.vexnum;i++)
for(j=0;j<g.vexnum;j++)
{ short3[i][j]=g.arcs[i][j];
path[i][j]=0;
}
printf('\n&#65400;&#65381;&#65397;FLOYD&#65410;&#65399;&#65406;&#65398;&#65422;&#65386;:\n');
for(k=0;k<g.vexnum;k++)
for(i=0;i<g.vexnum;i++)
{ if(short3[i][j]>(short3[i][k]+short3[k][j]))
{ short3[i][j]=short3[i][k]+short3[k][j];
path[i][j]=k;
}
printf('(%4c->%4c):%d',g.vexs[i-1],g.vexs[j-1],short3[i][j]);
}
}

laolaoliu2002(老刘) 于 2005-6-14 15:55:17

http://www.7880.com/Info/Article-56057c00.html里面有很详细的算法介绍

 
游客[ 2009-12-14 16:02:54
 


简单错误太多~

 

发表评论:

    昵称:
    密码: (游客无须输入密码)
    主页:
    正在载入数据,请稍候...