| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 405 人关注过本帖
标题:求解!关于结构体的一个问题
只看楼主 加入收藏
Benthy2
Rank: 1
等 级:新手上路
帖 子:25
专家分:7
注 册:2011-12-16
结帖率:66.67%
收藏
 问题点数:0 回复次数:0 
求解!关于结构体的一个问题
以下是一段C语言代码,编译的都没问题,执行后却发现了一个问题!(为调试发现问题做过一些小改动了)

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#define max_num  21

typedef struct arcnode
{   int  adjvex;   //该弧所指向的顶点的位置
     struct arcnode *nextarc;  //指向下一条弧的指针
     char info[10];   //存储与弧有关的信息
}arcnode;    //定义弧

typedef struct
{                                                                      //Gph->graph[i+1].firstarc->adjvex
     arcnode *firstarc;  //指向第一条依附该顶点的弧的指针
     char info[10];  //顶点信息
}Gnode;   //定义图的结点

typedef struct
{
     Gnode graph[max_num];   //注意第一个元素graph[0]不用
     int vexnum,arcnum;    //图的当前顶点数和弧数
     int kind;          //图的种类标志
}Graph;    //图
  
 int change(char *sz)     //字符串转为整形数据
{
    int i=0,n=0 ,wq=1,sum=0;
    char *p=NULL;

     p=sz;
     while(*sz)  { i++; sz++;  }
     n=i;
     while(*p)
     {  i=n;  wq=1;
        while(i>1)  {  wq=wq*10; i--;  }
        n--;
        sum=sum+wq*(*p-48);
        p++;
     }
     return sum;
}

void createGraph(Graph *Gph)    //构造图
{
     int i = 0, k = 0;    //i,k用于下面计数
     char data[20] = {0},temp[10] = {0};    //储存输入数据的临时空间
     char *p,*q;         //用以对输入数据的处理
     arcnode *Tarcnode;  //指向弧的指针
   
     printf("    现在开始构建图,此处默认构建有向无权图。请先给图由1开始做好标号,统计顶点数,\n");
     printf("再按照提示构建图。\n");

     printf("   输入图的顶点数:");
     scanf("%d", &Gph->vexnum);
     flushall();
     
     if(Gph->vexnum>max_num-1)      
     {
          printf("超过最大顶点数,请调整程序\n");
          exit(0);
     }

     printf("   依次输入各顶点的信息,以及以此顶点为弧尾的弧所指向的其它顶点的位置,\n");
     printf("中间用空格隔开。\n");


     for(i = 0; i < Gph->vexnum; i++)      //开始构造图
     {
           printf("输入第%d个顶点信息:", i+1);
           
           gets(data);   //用字符串存储输入的数据
           p = data;
           q = temp;
           while(*p)
           {
               if(*p == ' ')      //跳过空格符
                   p++;  
               while(*p != ' ')   //读取顶点信息
               {
                    *q = *p;
                    p++;
                    q++;
               }
               *q = 0;   
               strcpy(Gph->graph[i+1].info, temp);

               k = 1;   //k用于计数
               Gph->arcnum = 0;
               while(*p)           //读取邻结顶点位置
               {
                    if(*p == ' ')
                        p++;
                    q = temp;
                    while(*p != ' ' && *p)   
                    {
                         *q = *p;
                         p++;
                         q++;
                    }
                    *q = 0;

                    printf("*************************************\n");
                    Gph->graph[i+1].firstarc->adjvex =0;
                                       printf("*************************************\n");
                   if(k == 1)      //读取第一个邻结顶点位置
                   {     
                       {
                            int m=0;
                            m=change(temp);
                            printf("%d\n",m);
                            getch();
                       }
                         Gph->graph[i+1].firstarc->adjvex = change(temp);
                         Gph->arcnum++;   //弧数增加一
                         Gph->graph[i+1].firstarc->nextarc = NULL;
                         Tarcnode = Gph->graph[i+1].firstarc->nextarc;
                         k++;
                   }
                  
                   else
                   {   
                         Tarcnode->adjvex = change(temp);
                         Gph->arcnum++;
                         Tarcnode->nextarc = NULL;
                         Tarcnode = Tarcnode->nextarc;
                   }
               }
           }
           
     }
   

}

main()
{
      Graph Mgraph;

      createGraph(&Mgraph);
}


问题时,当程序执行到以下这个地方时,
                    printf("*************************************\n");
                    Gph->graph[i+1].firstarc->adjvex =0;
                                       printf("*************************************\n");

这条语句Gph->graph[i+1].firstarc->adjvex =0;执行不下去,Gph->graph[i+1].firstarc->adjvex无法被赋整数值

搜索更多相关主题的帖子: info include 结构体 C语言 
2012-06-11 22:36
快速回复:求解!关于结构体的一个问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012169 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved