我的程序正在使用图形,并且我正在尝试创建边的向量。我在程序的边缘类型是这个:构造向量通过函数
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行,我所知道的关于图
谢谢你的每一个机构
贾科莫。
您将它作为一个值传递:而是将其作为参考传递给它:CodaMinPrioritaMatrice(grafoMat,&vet) – Magn3s1um
@M您可能意思是“传递指向它的指针”。在C中没有引用的通过。 – 2013-08-16 20:03:38
我认为这个向量是作为指针传递的..也没有'&'。即如果我修改了一个函数中的矢量值,这个值也在主程序中修改了,如果我通过向量时没有'&' – giacomotb