//图
//定义
const int vnum=20;
typedef struct gp
{
VertexType vexs[vnum];
int arcs[vnum][vnum];
int vexnum,arcnum;//顶点/边数
}Graph;
//带权
const int vnum=20;
const int MAX_INT=32768;
typedef struct gp
{
VertexType vexs[vnum];
WeightType arcs[vnum][vnum];
int vexnum,arcnum;//顶点/边数
}WGraph;
//建立无向带权图
void CreatGraph (Graph *g)
{
int i,j,n,e,w;
char ch;
scanf("%d",&n);
scnnf("%d",&e);
for (i=0;i<g->vexnum;i++)
{
scanf("%c",&ch);
g->vexs[i]=ch;//输入顶点信息
}
for (i=0;i<g->vexnum;i++)//初始化
for (j=0;j<g->vexnum;j++)
g->arcs[i][j]=MAX_INT;
for (k=0;k<g->arcnum;k++)
{
scanf("%d %d %d",&i,&j,&w);
g->arcs[i][j]=w;
g->arcs[j][i]=w;//有向图无此行
}
}
//邻接表
//表节点
#define vnum 20
typedef struct arcnode
{
int adjvex;
WeightType weight;
struct arcnode *nextarc;
}ArcNode;
//表头节点
typedef struct vexnode
{
int vertex;
ArcNode *firstarc;
}AdjList[vnum];
//图
typedef struct gp
{
AdjList adjlist;
int vexnum,arcnum;
}Graph;
//建立无向带权图
CreateAdjlist (Graph *g)
{
int n,e,i,j,k;
ArcNode *p;
scanf ("%d %d",&n,&e);
g->vexnum=n;
g->arcnum=e;
for (i=0;i<n;i++)
{
g->adjlist[i].vertex=i;
g->adjlist[i].firstarc=NULL;
}
for (k=0;k<e;k++)
{
scanf ("%d %d",&i,&j);
p=(ArcNode*)malloc(sizeof(ArcNode));
p->adjvex=j;
p->nextarc=g->adjlist[i].firstarc;
g->adjlist[i].firstarc=p;
}
}