阅读背景:

C-数据结构-图-邻接表和邻接矩阵创建和定义_wuhardy的博客

来源:互联网 
//图
//定义
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;
	}
}

//图
//定义
const int vnum=20;
typedef struct gp
{



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: