关于c语言中二维数组的思考

来源:互联网 发布:c语言编写的程序被称为 编辑:程序博客网 时间:2024/06/10 07:31

1.我遇到了什么样的问题:

直接传值的话会出现调用错误,例如如下代码

#include <stdio.h>

#define MAX 100
int edge[MAX][MAX];
int graphsize=0;
int T=0;
int visited[MAX];

void scan(){

    printf("请输入节点个数:\n");

    scanf("%d",&graphsize);
    int j=0,k=0;
    for(;j<MAX;j++)
        for(;k<MAX;k++)
        edge[j][k]=0;
    printf("请输入边的个数:\n");
    scanf("%d",&T);
    while(T--){
        int x=0,y=0;
        scanf("%d %d",&x,&y);
        edge[x][y]=1;
    }
    int i=0;
    for(;i < graphsize;i++)
        visited[i] = 0;
}
void dfs_visited(int a[MAX][MAX],int u){
    printf("%d ",u+1);
    visited[u]=1;
    int v = 0;
    for(;v<graphsize;v++){
        if(a[u][v]==1&&visited[v]==0)
            dfs_visited(a,v);
    }
}
void dfs(int b[MAX][MAX]){
   int u = 0;
   printf("%d",b[0][1]);
   for(;u<graphsize;u++)
         if(visited[u]==0)
           dfs_visited(b,u);
}
int main(){
    scan();
    dfs(edge[MAX][MAX]);
}


这里面具体的错误自己调试一下便知道

2.我为什么遇到了这个问题:

我用邻接矩阵存储图的时候,进行深度优先遍历的时候,需要传递这个邻接矩阵作为实参,我直接使用二维数组的值传递方式;

3.我是怎么解决的:

此时我就要思考到底怎么给子函数写形参才能正确传递实参,附上代码给解决:

#include <stdio.h>
#define MAX 100
int edge[MAX][MAX];
char vertex[MAX];
int visited[MAX];
int graphsize;
int T;
int(*p)[MAX][MAX]=&edge;
int scan(){
    printf("输入节点个数:\n");
    scanf("%d",&graphsize);
    for(int i=0;i<graphsize;i++)
        vertex[i]=i;
    printf("输入边的条数:\n");
    scanf("%d",&T);
    while(T--){
        int x=0,y=0;
        scanf("%d",&x);
        scanf("%d",&y);
        edge[x][y]=1;
    }
}
void dfs_visited(int(*dv)[MAX][MAX],int u){
    printf("%d ",u+1);
    visited[u]=1;
    for(int v=0;v<graphsize;v++){
        if((*((*dv)[u]+v))==1&&visited[v]==0)
            dfs_visited(dv,v);
    }
}
void dfs(int(*d)[MAX][MAX]){
     int u=0;
     for(;u<graphsize;u++){
        if(visited[u]==0)
            dfs_visited(d,u);
     }
}
int main(){
    scan();
    dfs(p);
    printf("\n");
}

4.在解决这个问题的时候我学习到了二维数组实参与形参的匹配方法:


至于上图中的很多概念自己思考吧。。。

一下提供一些参考链接:http://www.cnblogs.com/stoneJin/archive/2011/09/21/2184211.html

0 0
原创粉丝点击