図の隣接表の保存がない


自分でデータ構造についてコードをノックしましたが、コードは大体分かりました.接触したばかりの時に本の言語で説明されているのを見て、自分ではよく分かりません.コードを見てから、本の文字記述と結び付けて、その記憶思想も分かりました.
#include 
#include 
#define MAXSIZE 100
typedef struct node
{
    int adjvex;
    struct node *next;
}EdgeNode;
typedef struct vnode
{
    int vertex;
    EdgeNode *firstedge;
}VertexNode;
void CreateAdjlist(VertexNode g[],int e,int n)
{
    EdgeNode *p;
    int i,j,k;
    printf("Input data of vetex(0~n-1);
"
); for(i=1;i<=n;i++) { g[i].vertex=i; g[i].firstedge=NULL; } for(k=1;k<=e;k++) { printf("Input edge of(i,j):"); scanf("%d%d",&i,&j); p=(EdgeNode*)malloc(sizeof(EdgeNode)); p->adjvex=j; p->next=g[i].firstedge; g[i].firstedge=p; p=(EdgeNode*)malloc(sizeof(EdgeNode)); p->adjvex=i; p->next=g[j].firstedge; g[j].firstedge=p; } } void AdlistPrint(VertexNode g[],int n) { int i; EdgeNode *p; for(i=1;i<=n;i++) { p=g[i].firstedge; printf("%d:",g[i].vertex); while (p!=NULL) { printf("%d->",p->adjvex); p=p->next; } printf("NULL
"
); } } int main() { VertexNode g[MAXSIZE]; CreateAdjlist(g,4,4); AdlistPrint(g,4); return 0; }