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].
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.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");
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.

Rispondi quotando