0

我的程序正在使用图形,我正在尝试创建一个边向量。我的程序中的边缘类型是这个:

typedef struct arco{
    TipoNodo p, s;
    int peso;
    }arco;

其中 p 和 s 是顶点,比索是边的长度。

我正在尝试创建一个由邻接矩阵构成的边向量,但是当我将 arco 类型的向量传递给我的函数时,我的程序会引发运行时错误。我应该如何将 arcos 的向量传递给我的函数,并修改他的元素?

主要代码:

case 'f':
      printf("Algoritmo di Dijkstra. Scrivere Nodo i di partenza: ");
      scanf("%d", &i);
      arco vet[MaxArchi];

          int dimensione;
          printf("fuck\n");
//I'm debugging just the matrix part, becouse I think that the error with adjacency list is the same.
          if(matlist=='m') dimensione = CodaMinPrioritaMatrice(grafoMat, vet); else dimensione = CodaMinPrioritaLista(grafoList, vet);
//printing the array, the program doesn't arrive here.
          for(peso = 0; peso <dimensione; peso++) printf("%d->%d, (%d)\n", vet[peso].p, vet[peso].s, vet[peso].peso);
          break;

功能:

int CodaMinPrioritaMatrice(GrafoMatrice *grafo, arco *vet[]){
      int dimensione;
      TipoNodo i, j;
      for(i=0; i<NumNodi; i++)
          for(j = 0; j<NumNodi; j++)
              if(grafo->matr_adiacenza[i][j] != 0){
                                             //the program stops here
                     //*vet[dimensione] = malloc(sizeof(arco));
                     vet[dimensione].p = i;
                     vet[dimensione].s = j;
                     vet[dimensione].peso = grafo->matr_adiacenza[i][j];

                     dimensione++;                    
              }
      return dimensione;
}

我没有发布我的整个程序,因为我写了或多或少 600 行代码,我对图形的了解

谢谢大家

贾科莫。

4

2 回答 2

2

我认为您需要在代码中再进行一次更改...

int dimensione=0;

您正在使用没有初始化的变量。

这可能会对您有所帮助。

于 2013-08-16T20:21:33.517 回答
1

这应该修复您的代码 -

更改函数定义:

int CodaMinPrioritaMatrice(GrafoMatrice *grafo, arco *vet[]){

至:

int CodaMinPrioritaMatrice(GrafoMatrice *grafo, arco *vet){
于 2013-08-16T20:11:56.137 回答