#include <iostream>
using namespace std;
struct Node
{
int vertex;
Node *next;
};
const int Maxsize=13;
class GraphReverse
{
public:
GraphReverse(int n,int e);
~GraphReverse(){}
private:
Node adjlist[Maxsize];
Node opposite[Maxsize];
int verNum,arcNum;
};
GraphReverse::GraphReverse(int n,int e)
{
verNum=n;arcNum=e;
int i,j,k;
for(i=0;i<verNum;i++)
{
adjlist[i].vertex=i;
adjlist[i].next=NULL;
opposite[i].vertex=i;
opposite[i].next=NULL;
}
for(k=0;k<arcNum;k++)
{
Node *s,*t;
cout<<"input:"<<endl;
cin>>i>>j;
s=new Node;s->vertex=j;
s->next=adjlist[i].next;
adjlist[i].next=s;
t=new Node;t->vertex=i;
t->next=opposite[j].next;
opposite[j].next=t;
}
cout<<endl<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
cout<<"有向图输出:"<<endl;
for(i=0;i<verNum;i++)
{
cout<<adjlist[i].vertex<<":";
Node *p=adjlist[i].next;
while(p!=NULL)
{
cout<<p->vertex<<"^";
p=p->next;
}
cout<<endl;
}
cout<<"逆向图输出:"<<endl;
for(i=0;i<verNum;i++)
{
cout<<opposite[i].vertex<<":";
Node *p=opposite[i].next;
while(p!=NULL)
{
cout<<p->vertex<<"^";
p=p->next;
}
cout<<endl;
}
}
int main()
{
GraphReverse Graph(13,22);
return 0;
}