作业帮 > 综合 > 作业

求fleury算法的伪代码 或C语言实现

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/06/07 15:33:17
求fleury算法的伪代码 或C语言实现
求fleury算法的伪代码 或C语言实现
1#include 2#include 3 4 5struct stack 6{int top , node[210];} f; //顶点的堆栈 7 8int a[201][201]; //图的邻接矩阵 9 10int n; 11 12void dfs(int x) //图的深度优先遍历 13{ 14int i; 15 16f.top ++; f.node[f.top] = x; 17 18for (i = 1; i 0) 21 { 22 a[i][x] = 0; a[x][i] = 0; //删除此边 23 24 dfs(i); 25 26 break; 27 } 28} 29 30void Euler(int x) //欧拉路算法 31{ 32int i , b; 33 34f.top = 0; f.node[f.top] = x; //入栈 35 36while (f.top >= 0) 37{ 38 b = 0; 39 40 for (i = 1; i 0) 42 {b = 1; break;} 43 44 if (b == 0) //如果没有点可以扩展,输出并出栈 45 { 46 printf("%d " , f.node[f.top]); 47 48 f.top --; 49 } 50 else {f.top --; dfs(f.node[f.top+1]);} //如果有,就DFS 51 } 52} 53 54int main() 55{ 56 57int m , s , t , num , i , j , start; 58 59 //input 60 61 scanf("%d %d" , &n , &m); //n顶点数 m边数 62 63 memset(a , 0 , sizeof(a)); 64 65 for (i = 0; i < m; i ++) 66 { 67 scanf("%d %d" , &s , &t); 68 a[s][t] = 1; a[t][s] = 1; 69 } 70 71 72 //判断是否存在欧拉回路 73 74 s = 0; start = 1; 75 76 for (i = 1; i