//邻接表
#include<bits/stdc++.h>
using namespace std;
#define MAXNODE 100//最大顶点数
typedef char VertexType;//顶点类型
typedef int EdgeTypd;//边权数据类型
typedef struct EdgeNOde//边表节点
{
int node_index;
EdgeTypd weight;
struct EdgeNOde* next;
}EdgeNOde;
typedef struct VertexNode//顶点表节点
{
VertexType data;
EdgeNOde *firstedge;
}VertexNode,MyList[MAXNODE];
typedef struct
{
MyList mylist;
int num_Edge,num_Node;
}GraphList;
void CreateGraph(GraphList &G)
{
EdgeNOde *pe;
cin>>G.num_Node>>G.num_Edge;
for(int i=0;i<G.num_Node;i++)//读取顶点信息
{
cin>>G.mylist[i].data;
G.mylist[i].firstedge=NULL;
}
int vi,vj;
for(int j=0;j<G.num_Edge;j++)
{
cin>>vi>>vj;
pe=(EdgeNOde*)malloc(sizeof(EdgeNOde));
pe->node_index=j;
pe->next=G.mylist[vi].firstedge;
G.mylist[vi].firstedge=pe;
pe=(EdgeNOde*)malloc(sizeof(EdgeNOde));
pe->node_index=vi;
pe->next=G.mylist[vj].firstedge;
G.mylist[vj].firstedge=pe;
}
}
int main()
{
GraphList G;
CreateGraph(G);
return 0;
}
参考大佬代码写的模板