Realización de estructura gráfica
Matriz de adyacencia
#define maxsize 20
typedef char Vertex;
typedef int Edge;
typedef struct{
Vertex vexs[maxsize];
Edge edges[maxsize][maxsize];
int vnums,enums;
}MGraph;
void Create_MGraph(MGraph *G){
cout<<"请输入点数和边数:"<<endl;
cin>>G->vnums>>G->enums;
for(int i=0;i<G->vnums;++i){
cin>>G->vexs[i];
}
for(int i=0;i<G->vnums;++i){
for(int j=0;j<G->vnums;++j)
G->edges[i][j]=0;
}
for(int i=0;i<G->enums;++i){
int m,n;
cout<<"请输入边的两个顶点:";
cin>>m>>n;
G->edges[m][n]=1;
}
}
Lista de adyacencia
typedef struct node{
int adjvex;
node *next;
}EdgeNode;
typedef struct vnode{
Vertex vertex;
EdgeNode *firstedge;
}VertexNode;
typedef struct{
VertexNode AdjList[maxsize];
int vnums,enums;
}ALGraph;
void Create_ALGraph(ALGraph *G){
cout<<"请输入顶点数和边数:"<<endl;
cin>>G->vnums>>G->enums;
for(int i=0;i<G->vnums;++i)
G->AdjList[i].firstedge=nullptr;
for(int k=0;k<G->enums;++k){
int i,j;
cin>>i>>j;
EdgeNode *s=(EdgeNode*)malloc(sizeof(EdgeNode));
s->adjvex=j;
s->next=G->AdjList[i].firstedge;
G->AdjList[i].firstedge=s;
}
}