怎么创建一个空无向图并返回指针?

给定无向图的数据类型如下
#define MAXVEX 100
typedef char VertexType;
typedef int EdgeType;
typedef struct {
VertexType vexs[MAXVEX]; //顶点表
EdgeType edge[MAXVEX][MAXVEX]; //邻接矩阵,即边表
int vertexNum,edgeNum;
}MGraph,*Graph;

请设计Graph createGraph()函数。
该函数创建一个空图,并返回图指针。

Graph createGraph()
{
    Graph g;
    for(int i=0;i<g->vertexNum;i++){
        g->vexs[i]=0;
    }
    for(int j=0;j<g->vertexNum;j++){
        for(int k=0;k<g->vertexNum;k++){
            g->edge[j][k]=0;
        }
    }
    return g;
}

运行错误了

Graph createGraph()
{
    Graph g;
    g=(Graph)malloc(sizeof(MGraph));
    for(int i=0;i<g->vertexNum;i++){
        g->vexs[i]=0;
    }
    for(int j=0;j<g->vertexNum;j++){
        for(int k=0;k<g->vertexNum;k++){
            g->edge[j][k]=0;
        }
    }
    return g;
}