|
发表于 2016-5-10 21:33:50
From FishC Mobile
|
显示全部楼层
|阅读模式
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
为什么顶点数和边数没办法录入
#include <stdio.h>
#include <stdlib.h>
#define MaxVertexNum 50 //定义最大顶点数
typedef struct node //边表节点
{
int adjvex; //邻接点域
struct node *next; //链域
}EdgeNode;
typedef struct Vnode //顶点表结点
{
char vertex; //顶点域
EdgeNode *firstedge; //边表头指针
}VertexNode;
typedef VertexNode AdjList[MaxVertexNum]; //AdjList是邻接表类型
typedef struct
{
AdjList adjlist; //邻接表
int n,e; //图中当前顶点数和边数
}ALGraph; //图类型
//=================建立图的邻接表============
void CreateALGraph(ALGraph *G)
{
int i,j,k;
char a,b;
EdgeNode *s; //定义边表节点
printf("Input VertexNum(n) and EdgesNum(e):");
scanf("%d,%d",&G->n,&G->e);
scanf("%c",&a);
printf("Input Vertex string:");
for(i=1;i<=G->n;i++) //建立边表
{
scanf("%c",&a);
G->adjlist[i].vertex=a; //读入顶点信息
G->adjlist[i].firstedge=NULL;//边表置为空表
scanf("%c",&b);
}
printf("Input edges,Create Adjacency List ");
for(k=1;k<=G->e;k++) //建立边表
{
scanf("%d,%d",&i,&j); // 读入边(Vi,Vj)的顶点对序号
s=(EdgeNode*)malloc(sizeof(EdgeNode)); // 生成边表结点
s->adjvex=j; //邻接点序号为j
s->next=G->adjlist[i].firstedge;
G->adjlist[i].firstedge=s; //将新结点*s插入顶点Vi的边表头部
s=(EdgeNode*)malloc(sizeof(EdgeNode));
s->adjvex=i; //邻接点序号为i
s->next=G->adjlist[j].firstedge;
G->adjlist[j].firstedge=s; //将新节点*S插入顶点Vi的边表头部
}
}
int main()
{
int i;
ALGraph *G;
G=(ALGraph*)malloc(sizeof(ALGraph));
CreateALGraph(G);
printf("%c",G->adjlist[2].vertex);
return 0;
} |
|