69,371
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <stdlib.h>
#include <io.h>
#include <time.h>
#include <math.h>
#define OK 1
#define ERROR 0
#define TRUE 1
#define FASLE 0
#define MAXVEX 100 /**< 最大顶点数 */
typedef int Status;
typedef int VertexType;
typedef int EdgeType;
/**< 边表节点 */
struct edgenode;
typedef struct edgenode EdgeNode;
struct edgenode
{
int adjvertex;
EdgeNode *next;
};
/**< 顶点节点 */
struct vertexnode;
typedef struct vertexnode VertexNode;
typedef VertexNode AdjList[MAXVEX];
struct vertexnode
{
VertexType data;
EdgeNode *header;
};
/**< 图 */
struct graph;
typedef struct graph *Graph;
struct graph
{
int numvertex,numedge;
AdjList adjList;
};
void CreatGraph(Graph G)
{
G=(Graph)malloc(sizeof(struct graph));
int i,j,k;
EdgeNode *E;
printf("输入顶点数和边数:\n");
scanf("%d %d",&G->numvertex,&G->numedge);
for(i=0; i < G->numvertex; i++)
G->adjList[i].header = NULL;
for(i=0; i < G->numedge; i++)
{
printf("输入边(vi,vj)上的顶点序号:\n");
scanf("%d %d",&i,&j); /* 输入边(vi,vj)上的顶点序号 */
E=(EdgeNode *)malloc(sizeof(EdgeNode));
E->adjvertex = j;
E->next=G->adjList[i].header;
G->adjList[i].header =E;
E=(EdgeNode *)malloc(sizeof(EdgeNode)); /* 向内存申请空间,生成边表结点 */
E->adjvertex=i; /* 邻接序号为i */
E->next = G->adjList[j].header;
G->adjList[j].header =E;
}
}
typedef struct vertexnode VertexNode;
typedef VertexNode AdjList[MAXVEX];
放到结构体定义后面试试,前置声明去掉。