#include #define MAXVNUM 50 using namespace std; class Mgraph; class Edge; class Edge{ friend class Mgraph; public: Edge() {mark=0;}; private: int v[2]; Edge *next[2]; int mark; }; class Mgraph{ public: Mgraph(); void input(); void eulercycle(); void eulercycle(int currentv); Edge *nextedge(int cv); private: int n; int e; Edge *vertex[MAXVNUM]; }; Mgraph::Mgraph(){ int i; for(i=0;i>n>>e; cout<<"Please enter the edges"<>te->v[0]>>te->v[1]; cout<v[0]<< " " <v[1]<next[0]=vertex[te->v[0]]; vertex[te->v[0]]=te; te->next[1]=vertex[te->v[1]]; vertex[te->v[1]]=te; } } Edge *Mgraph::nextedge(int cv){ Edge *te,*tmp; te=vertex[cv]; while(te && te->mark){ tmp=te; if(cv==te->v[0]) te=te->next[0]; else te=te->next[1]; delete tmp; } if(te){ te->mark=1; if(cv==te->v[0]) vertex[cv]=te->next[0]; else vertex[cv]=te->next[1]; return te; } vertex[cv]=0; return 0; } void Mgraph::eulercycle(int currentv){ Edge *ce; while(ce=nextedge(currentv)){ if(currentv==ce->v[0]) eulercycle(ce->v[1]); else eulercycle(ce->v[0]); } cout<