关于图的建立,小弟我写的程序如何都只是一直让输入边表结点呢

关于图的建立,我写的程序怎么都只是一直让输入边表结点呢?
#define maxsize 100
#include<stdio.h>
#include<stdlib.h>
int visit[maxsize];
typedef struct Arcnode
{
int adjvex;//邻接点域对应的下标
struct Arcnode * nexttarc;
}Arcnode;//边表结点
typedef struct Vnode
{
int data;
Arcnode * firsttarc;
}VNode;
typedef struct
{
VNode adjust[maxsize];
int n,e;
}AGraph; 
AGraph * gram()
{
AGraph * G;//建立一个指向图的指针变量
G=(AGraph *)malloc(sizeof(AGraph));/*定义结点指针之后要分配存储空间,即初始化*/
Arcnode * E;//建立一个边表指针
int i,j;
printf("请输入顶点和边的个数");
scanf("%d,%d",& G->n,& G->e);
for(i=0;i<G->n;i++)
{
   printf("请输入结点信息\n");
           scanf("%d",&G->adjust[i].data);
G->adjust[i].firsttarc=NULL;
       }
for(j=0;j<G->e;j++)//建立边表
{
printf("请输入边(vi,vj)上的顶点序号:\n");
scanf("%d,%d",&i,&j );
        E=(Arcnode *)malloc(sizeof(Arcnode));
E->adjvex=j;
E->nexttarc=G->adjust[i].firsttarc;
G->adjust[i].firsttarc=E;

E=(Arcnode *)malloc(sizeof(Arcnode));
E->adjvex=i;
E->nexttarc=G->adjust[j].firsttarc;
G->adjust[j].firsttarc=E;

}


 return G;

}
void DFS( AGraph * G,int v)
{
Arcnode * p;
visit [v]=1;  
printf("%d",G->adjust[v].data);
p=G->adjust[v].firsttarc;
while(p!=NULL)
{
if (visit[p->adjvex]==0)//递归的条件
{
DFS(G,p->adjvex);
}
p=p->nexttarc;
}

}
int main(void)
{

AGraph * G;
G=gram();
DFS(G,0);
return 1;
}
关于图的建立,小弟我写的程序如何都只是一直让输入边表结点呢关于图的建立,小弟我写的程序如何都只是一直让输入边表结点呢
数据结构

------解决方案--------------------

for(j=0;j<G->e;j++)//建立边表
{
printf("请输入边(vi,vj)上的顶点序号:\n");
scanf("%d,%d",&i,&j );//你用j作循环变量。。而这里你把j改变了。。所以一直不能退出循环。。
E=(Arcnode *)malloc(sizeof(Arcnode));
E->adjvex=j;
E->nexttarc=G->adjust[i].firsttarc;
G->adjust[i].firsttarc=E;

E=(Arcnode *)malloc(sizeof(Arcnode));
E->adjvex=i;
E->nexttarc=G->adjust[j].firsttarc;
G->adjust[j].firsttarc=E;
}