Ciao a tutti ho il seguente problema: voglio inserire un nodo isolato in un grafo rappresentato con matrice di adiacenza dinamica. Cioè la matrice dinamica[NxN] è rappresentata tramite un vettore dinamico[NxN].
codice:
void INSERISCI_NODO(int n, int **vt)/*inserisce nodo isolato n esimo*/
{
int i,j;
int nuovi=(n+1)*(n+1);
*vt=(int*)realloc(*vt,nuovi*sizeof(int));
for (i=0; i<(n*(n+1)); i++)
{
if ((i!=0)&&(i%n==0))
{
for (j=(((n+1)*(n+1))-1); j>i; j--)
{
(*vt)[j]=(*vt)[j-1];
}
(*vt)[i]=0;
}
}
/*gli ultimi n elementi saranno 0 */
for (j=i; j<((n+1)*(n+1)); j++)
(*vt)[j]=0;
printf("vettore NUOVO NODO ISOLATO e' : \n");
for (i=0; i<((n+1)*(n+1)); i++)
{
if((i!=0)&&(i%(n+1)==0))
printf(" ");
printf("%d ",(*vt)[i]);
}
printf("\n");
}
int main()
{
int nodi,i;
int *vet=NULL;
printf("dammi il numero di nodi : \n");
scanf("%d",&nodi);
RIEMPI(nodi,&vet);
printf("vettore INIZIALE e' : \n");
for(i=0; i<(nodi*nodi); i++)
{
if((i!=0)&&(i%nodi==0))
printf(" ");
printf("%d ",vet[i]);
}
printf("\n");
il vettore vet (dichiarato come puntatore ad interi) è riempito nella void riempi. Poi richiamo la void INSERISCI_NODO dove gli passerò il vettore [NxN] elementi che aggiungendo un nodo diventerà (riallocandolo)di (N+1)*(N+1) elementi.
Esempio se vet di 3 nodi è:
011 101 110
aggiungendo un elemento dovrebbe essere:
0110 1010 1100 0000
Invece il mio output è sbagliato.
Spero di essere stato chiaro e che qualcuno mi aiuti grazie.