typedef struct _set{
int root;
int rank;
}Set;
void Kruskal(Graph* g)
{
Set uni[g->nv];
Edge result[g->nv - 1];
int i;
int count = 0;
int num = 0;
int aRoot, bRoot;
for(i = 0; i < g->nv; i++){
uni[i].root = i;
uni[i].rank = 0;
}
QuickSort(g, 0, g->ne-1);
while(count != (g->nv-1) && num != g->ne){
WeightedUnion(uni, g->path[num].src, g->path[num].dest);
aRoot = Find(uni, g->path[num].src);
bRoot = Find(uni, g->path[num].dest);
if(aRoot != bRoot){
result[num] = g->path[num];
count++;
}
num++;
}
if(count != g->nv-1){
printf("No spanning tree\n");
}
else{
for(i = 0; i <= count; i++){
printf("[%d] %d - %d : %d\n",i+1,result[i].src,result[i].dest,result[i].weight);
}
}
}
Это моя часть кода. Проблема в том, что я не могу инициализировать 'uni [g-> nv]'. Вы можете увидеть цикл «за» рядом с областью переменных. И я был уверен, что эта репутация должна инициализировать этот массив, но результата не было. Этот массив не включал никаких других значений. просто пусто. Я не могу найти свою проблему. Пожалуйста, скажите мне мою проблему или ошибки.Инициализация структуры массива в c
- Я запустил свой код в Xcode. Возможно, эта информация полезна
@StillLearning: Ну, для меня это явно код C. Почему вы думаете, что это не так? – ckruczek
Если вам нужен элемент 'g-> nv'thth' uni', определите его как 'uni [g-> nv + 1]'. – alk
«Проблема в том, что я не могу инициализировать' uni [g-> nv] '" - почему бы и нет? Эта петля прекрасна. Пожалуйста, объясните, какая у вас проблема. –