qq_43271650 2018-11-11 16:08 采纳率: 75%
浏览 429
已采纳

编译时提示变量无大小?

#include
#include
#define MAXVEX 100 //最大顶点数
#define INFINITY 65535 //用65535来代表无穷大
int visited[MAXVEX]={0};
typedef struct
{ char vexs[MAXVEX]; //顶点表

int arc[MAXVEX][MAXVEX]; //邻接矩阵,可看作边

int numVertexes, numEdges; //图中当前的顶点数和边数
}Graph;

                void CreateGraph(Graph *g)
                {    int i,j,k,w,t;  
                printf("输入顶点数,边数和t(中间用空格):");  
                scanf("%d %d %d", &(g->numVertexes), &(g->numEdges),&t);  
                printf("\n");
                for(i=1;i<=g->numVertexes;i++) 
                {     
                getchar();    
                printf("输入第%d顶点信息vexs[%d]=",i,i);    
                scanf("%c",&(g->vexs[i])); 
                }  
                printf("\n"); 
                for(i=1;i<=g->numVertexes;i++)    
                for(j=1;j<=g->numVertexes;j++)    
                if (t>2)  
                g->arc[i][j] = INFINITY;        
                else       
                g->arc[i][j]=0;   
                for(k=1;k<=g->numEdges;k++)       
                {            
                printf("输入i j(中间用空格):");
                scanf("%d %d",&i,&j);    
                if(i>g->numVertexes ||j>g->numVertexes)  exit(0);   
                if(t>2)          
                {              
                printf("输入w:");         
                scanf("%d",&w);       
                g->arc[i][j]=w;       
                if(t==3)  
                g->arc[j][i]=w;  
                }       
                else     
                {  
                g->arc[i][j]=1;      
                if (t==1)  
                g->arc[j][i]=1;     
                }    
                }   
                printf("\n"); 
                printf("输出邻接矩阵:\n"); 
                for(i=1;i<=g->numVertexes ;i++)   
                {      
                for(j=1;j<=g->numVertexes ;j++) 
                {       
                printf("%8d",g->arc[i][j]);     
                if(t>2&&g->arc[i][j]==65535)         
                g->arc[i][j]=0; 
                else if(t>2&&g->arc[i][j]!=65535)       
                g->arc[i][j]=1; 
                }   
                printf("\n");
                }  
                }  




                void dfs (Graph g,int i)         //广度优先搜索,从顶点i开始遍历
                {       int j;   
                printf("%d->",i);    
                //输出访问顶点    
                visited[i]=1;            //全局数组访问标记置1表示已经访问    
                for(j=1; j<=g.numVertexes; j++)      
                if ((g.arc[i][j]==1)&&(!visited[j]))                     
                dfs (g,j);
                }

                void bfs (Graph g,int i)
                {    
                int visited[MAXVEX]={0}; 
                int  q[g.numVertexes+1] ; //此处出现问题提示q没有大小。求帮助 
                int  f,r,j ;   
                f=r=0 ;   
                printf("%d->",i);
                visited[i]=1 ;
                r++;    
                q[r]=i ;   
                while (f<r)   
                {   
                f++; i=q[f] ;   
                for (j=1; j<=g.numVertexes; j++)        
                if ((g.arc[i][j]==1)&&(!visited[j]))             
                {  
                printf("%d->",j);    ;     visited[j]=1 ;     r++; q[r]=j ;  
                }    
                }
                }  


                int main()
                {  
                Graph g;   
                int i; 
                printf("t为1~4,分别表示无向图、有向图、带权无向图、带权有向图\n"); 
                CreateGraph(&g); 
                printf("\n输入i:"); 
                scanf("%d",&i); 
                printf("\n深度优先搜索遍历:");  
                dfs (g,i); 
                printf("NULL\n");
                printf("广度优先搜索遍历:"); 
                bfs (g,i);    
                printf("NULL\n");
                return 0;
                }
  • 写回答

3条回答

  • threenewbee 2018-11-11 16:11
    关注

    int q[g.numVertexes+1] ; //此处出现问题提示q没有大小。求帮助
    这种定义数组,大小是变量的代码,有的编译器不支持,有的编译器支持。
    gcc是支持的,你用devc++这个软件,带gcc编译器,可以编译。

    对于不支持的编译器,只能用malloc或者new动态分配了。

    你的代码,不考虑运行是否对,我已经测试过了,是可以编译的。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥20 Python安装cvxpy库出问题
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥15 python天天向上类似问题,但没有清零
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 C#调用python代码(python带有库)
  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题