#define VNUM 20
#include<stdio.h>
#include<stdlib.h>
//邻接表创建图
//邻接点结构
typedef struct ArcNode
{
int AdjVex;//边的终点编号
int weight;//边的权重
ArcNode *NextEdge;
} ArcNode,*A;
//表头结点数组Adjlist G
typedef struct Vnode
{
ArcNode *firstedge;//指向第一条边的指针
int data;//顶点信息
} Adjlist;
//邻接表存储结构
typedef struct GNode
{
int nv;
int ne;
Adjlist G[VNUM];//链表 v1v2v3v4v5表头的一列
}GNode,*LGraph;
LGraph CreateGraph()
{
LGraph Graph;
Graph = (LGraph)malloc(sizeof(struct GNode));
printf("请输入图的顶点数和边数:");
scanf("%d", & Graph->nv);
scanf("%d", & Graph->ne);
//竖着的
for (int v=0; v<Graph->nv; v++ ) /* 这里默认顶点编号从0开始*/
Graph->G[v].firstedge = NULL;//表头为空
int v1,v2,w;
A p;
//横着的
for (int k=0; k<Graph->ne; k++){
printf("请输入边的顶点及权重");
scanf("%d %d %d", &v1, &v2, &w); /*输入边的两个顶点和权重*/
p = (A)malloc(sizeof(struct ArcNode));
p->AdjVex=v2; p->weight=w;
p->NextEdge=Graph->G[v1].firstedge;
Graph->G[v1].firstedge=p;
p = (A)malloc(sizeof(struct ArcNode)); //无向图再创建一个对称边
p->AdjVex=v1;
p->NextEdge=Graph->G[v2].firstedge;
Graph->G[v2].firstedge=p;}
return Graph;
}
int main()
{
ArcNode linjiedian;
Vnode biaotouxinxi;
GNode linjiebiao;
CreateGraph();
return 0;
}
05-25
4004
04-19
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交