求大神解答一个关于指针的问题
本来是要创建一个邻接表的,但是输入数据里没有给输入边的数目,所以我就在每次输入一个数字时用指针遍历当前节点的邻接点,看是否有重复,有则该节点数组数据输入完毕,换下一个节点数组,但是遍历用的那个指针一直报错typedef struct ArcNode //单个邻接点点结构
{
int adjvex; //下标
struct ArcNode *nextarc; //下一个邻接点
}ArcNode;
typedef struct VNode
{
ArcNode *firstarc; //头节点
int data; //节点数据
}VNode, AdjList[MAX]; //节点数组
typedef struct
{
AdjList adjList; //节点数组
int numVertexes; //邻接表节点数目
}GraphAdjList;
邻接表结构
下面是输入数据
(1)输入:input.txt,里面有至少3行,第一行为节点个数,第二行开始为无向图各个节点的邻接表示,最后一行是空行。若以上例为例,则input.txt中的数据(全部为半角符号)为:
4
0 1 3
1 0 2 3
2 1 3
3 0 1 2
代码:
/*待修改 设置一个指针遍历,看是否有重复边 有则使用下一个数组*/ /*指针问题,未解决 */
void CreateGraph(GraphAdjList *G)
{
int i, input;
scanf("%d", &G->numVertexes);
for(i = 0; i < G->numVertexes; i++);
{
G->adjList.firstarc = NULL;
G->adjList.data = i;
}
scanf("%d", &i);
while(scanf("%d", &input) != EOF)
{
ArcNode *q;
q = G->adjList.firstarc;
while(q)
{
if(q->adjvex == input)
{
i++;
break;
}
q = q->nextarc;
}
ArcNode *p;
if(!q)
{
p = (ArcNode *)malloc(sizeof(ArcNode));
p->adjvex = input;
p->nextarc = G->adjList.firstarc;
G->adjList.firstarc = p;
}
}
}
可以帮忙看一下吗 类似的问题我遇到两次了 查书,上网都找不到答案