gpt4 book ai didi

c - 将结构 vector 传递给函数

转载 作者:太空宇宙 更新时间:2023-11-04 07:26:07 24 4
gpt4 key购买 nike

我的程序正在处理图形,我正在尝试创建一个边 vector 。我程序中的边类型是这个:

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

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

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

主要代码:

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 行代码,我对图形的了解

谢谢大家

贾科莫。

最佳答案

我认为您需要在代码中再做一项更改...

int dimensione=0;

你正在使用一个没有初始化的变量。

这可能对你有帮助。

关于c - 将结构 vector 传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18281231/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com