千辛万苦写出来一个结果说我有一个错了,晕,我自己测试却一点问题都没有,烦死了
#include <stdio.h> struct graph{ int n,e; int edge[10][10]; }tu; int visited[10]; int stack[10]; void create() {int i,a,b; int n; n=tu.n; for(i=0;i<tu.n;i++) { scanf("%d %d",&a,&b); tu.edge[a][b]=1; tu.edge[b][a]=1; } } void DFS(int a) {int i; visited[a]=1; printf("%d ",a); for(i=0;i<tu.n;i++) { if(visited[i]==0&&tu.edge[a][i]==1) { DFS(i); } } } void push(int x) {int i=0; while(stack[i]!=-1) { i++; } stack[i]=x; } int pop() {int i=9; int x; while(stack[i]==-1&&i>0) { i--; } x=stack[i]; stack[i]=-1; return x; } void BFS(int a) {int i,k; visited[a]=1; for(i=0;i<tu.n;i++) { if(visited[i]==0&&tu.edge[a][i]==1) {push(i); visited[i]=1; printf("%d ",i); } } while(k!=-1) { k=pop(); if(k!=-1) BFS(k);} } int main(void) { int n,e,i; //memset(tu->edge,0,100); scanf("%d %d",&n,&e); tu.n=n; tu.e=e; create(); for(i=0;i<10;i++) {visited[i]=0; stack[i]=-1;} for(i=0;i<n;i++) { if(visited[i]==0) {printf("{ "); DFS(i); printf("}\n");} } for(i=0;i<10;i++) {visited[i]=0; stack[i]=-1;} for(i=0;i<n;i++) { if(visited[i]==0) {printf("{ %d ",i); BFS(i); printf("}\n");} } //printf("%d",tu.edge[3][0]); return 0; }