急求一个Fleury
急求一个Fleury算法,求高手来个程序 网上有一些程序代码。 没有看懂……………… #include <stdio.h>#include <string.h>
struct stack
{int top , node;} f; //顶点的堆栈
int a; //图的邻接矩阵
int n;
void dfs(int x) //图的深度优先遍历
{int i;
f.top ++; f.node = x;
for (i = 1; i <= n; i ++)
if (a > 0)
{ a = 0; a = 0; //删除此边
dfs(i);
break; }
}
void Euler(int x) //欧拉路算法
{int i , b;
f.top = 0; f.node = x; //入栈
while (f.top >= 0)
{b = 0;
for (i = 1; i <= n; i ++)
if (a] > 0)
{b = 1; break;}
if (b == 0) //如果没有点可以扩展,输出并出栈
{ printf("%d " , f.node);
f.top --;}
else {f.top --; dfs(f.node);} //如果有,就DFS
}
}
int main()
{
int m , s , t , num , i , j , start;
//input
scanf("%d %d" , &n , &m); //n顶点数 m边数
memset(a , 0 , sizeof(a));
for (i = 0; i < m; i ++)
{printf("innput s,t");
scanf("%d %d" , &s , &t);
a = 1; a = 1;
}
//判断是否存在欧拉回路
s = 0; start = 1;
for (i = 1; i <= n; i ++)
{num = 0;
for (j = 1; j <= n; j ++)
num += a;
if (num % 2 == 1)
{start = i; s ++;}
}
if ((s == 0) || (s == 2))
Euler(start);
else printf("No Euler path\n");
getchar(); getchar();
return 0; } 诶 有么有 matlab版的 没有matlab版本的吗
页:
[1]