Mini grafo con nodos aleatorios
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
typedef struct str_nodo *Nodo;
typedef struct str_nodo {
int valor;
Nodo *nodos; //Nodos con los que esta unido el nodo actual
int n_nodos;
}*Grafo;
Nodo crear_nodo(int valor);
void agregar_nodo(Nodo inicial,Nodo final); //Esta funcion une ambos nodos
int main() {
int i,j;
Grafo grafo,temp;
srand(time(NULL));
grafo = crear_nodo(rand());
i = 0;
while(i < 1000000) {
agregar_nodo(grafo,crear_nodo(rand()));
i++;
}
i = 0;
while(i < 1000) {
temp = grafo->nodos[rand() % grafo->n_nodos];
j = 0;
while(j < 200) {
agregar_nodo(temp,crear_nodo(rand()));
j++;
}
i++;
}
getc(stdin);// Solo para que no se cierre el programa pero no me gusta usar getc
return 0;
}
Nodo crear_nodo(int valor) {
Nodo nodo;
nodo = calloc(1,sizeof(struct str_nodo));
nodo->valor = valor;
nodo->nodos = NULL;
nodo->n_nodos = 0;
return nodo;
}
void agregar_nodo(Nodo inicial,Nodo final) {
inicial->nodos = realloc(inicial->nodos,(inicial->n_nodos +1 )*sizeof(struct str_nodo*)); //Incrementamos el espacio para (inicial->n_nodos +1) Apuntadores
final->nodos = realloc(final->nodos,(final->n_nodos +1 )*sizeof(struct str_nodo*)); //Incrementamos el espacio para (final->n_nodos +1) Apuntadores
inicial->nodos[inicial->n_nodos] = final;
final->nodos[final->n_nodos] = inicial;
printf("%i <-> %i\n",inicial->valor,final->valor);
inicial->n_nodos++;
final->n_nodos++;
}
Va una prueba con dato adjunto
Saludos
https://twitter.com/albertobsd
#include<stdlib.h>
#include<time.h>
typedef struct str_nodo *Nodo;
typedef struct str_nodo {
int valor;
Nodo *nodos; //Nodos con los que esta unido el nodo actual
int n_nodos;
}*Grafo;
Nodo crear_nodo(int valor);
void agregar_nodo(Nodo inicial,Nodo final); //Esta funcion une ambos nodos
int main() {
int i,j;
Grafo grafo,temp;
srand(time(NULL));
grafo = crear_nodo(rand());
i = 0;
while(i < 1000000) {
agregar_nodo(grafo,crear_nodo(rand()));
i++;
}
i = 0;
while(i < 1000) {
temp = grafo->nodos[rand() % grafo->n_nodos];
j = 0;
while(j < 200) {
agregar_nodo(temp,crear_nodo(rand()));
j++;
}
i++;
}
getc(stdin);// Solo para que no se cierre el programa pero no me gusta usar getc
return 0;
}
Nodo crear_nodo(int valor) {
Nodo nodo;
nodo = calloc(1,sizeof(struct str_nodo));
nodo->valor = valor;
nodo->nodos = NULL;
nodo->n_nodos = 0;
return nodo;
}
void agregar_nodo(Nodo inicial,Nodo final) {
inicial->nodos = realloc(inicial->nodos,(inicial->n_nodos +1 )*sizeof(struct str_nodo*)); //Incrementamos el espacio para (inicial->n_nodos +1) Apuntadores
final->nodos = realloc(final->nodos,(final->n_nodos +1 )*sizeof(struct str_nodo*)); //Incrementamos el espacio para (final->n_nodos +1) Apuntadores
inicial->nodos[inicial->n_nodos] = final;
final->nodos[final->n_nodos] = inicial;
printf("%i <-> %i\n",inicial->valor,final->valor);
inicial->n_nodos++;
final->n_nodos++;
}
Va una prueba con dato adjunto
Saludos
https://twitter.com/albertobsd
Comentarios