24小时热门版块排行榜    

查看: 196  |  回复: 0

脚快跑

新虫 (初入文坛)

[求助] 求大神解答一个关于指针的问题

本来是要创建一个邻接表的,但是输入数据里没有给输入边的数目,所以我就在每次输入一个数字时用指针遍历当前节点的邻接点,看是否有重复,有则该节点数组数据输入完毕,换下一个节点数组,但是遍历用的那个指针一直报错

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;
                }
        }
}

新注册的号,金币只有这么多了,求大神帮忙!!

求大神解答一个关于指针的问题
b98bfd1f4134970a30c0bbcd92cad1c8a6865d7c.jpg
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 脚快跑 的主题更新
信息提示
请填处理意见