我的程序正在使用图形,我正在尝试创建一个边向量。我的程序中的边缘类型是这个:
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 行代码,我对图形的了解
谢谢大家
贾科莫。