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

//图
//定义
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;
	}
}


 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值