Nodos.c
#include <stdio.h>
#include <stdlib.h>
#include "nodos.h"
nodoGrafo* crearNodoGrafo(void)
{
nodoGrafo* p;
listaHijos* lh;
p = (nodoGrafo*)malloc(sizeof(nodoGrafo));
lh = (listaHijos*)malloc(sizeof(listaHijos));
if (p == NULL || lh == NULL)
{
printf("crearNodoGrafo: Falta memoria\n");
exit(1);
}
lh->numHijos = 0;
p->listaHijos = lh;
return p;
}
void destruirNodoGrafo(nodoGrafo *p)
{
free(p->listaHijos);
free(p->pestadoPuzzle);
free(p);
}
nodoLista* crearNodoLista(void)
{
nodoLista* p;
p = (nodoLista*)malloc(sizeof(nodoLista));
if (p == NULL)
{
printf("crearNodoLista: Falta memoria\n");
exit(1);
}
return p;
}
void destruirNodoLista(nodoLista *p)
{
free(p);
}
nodoArbolSMA* crearNodoArbolSMA(void)
{
nodoArbolSMA* p;
listaHijosSMA* lh;
hijoSMA* h;
int i;
p = (nodoArbolSMA*) malloc (sizeof(nodoArbolSMA));
lh = (listaHijosSMA*) malloc (sizeof(listaHijosSMA));
if (p == NULL || lh == NULL)
{
printf("crearNodoArbol: Falta memoria\n");
exit(1);
}
for (i = 0; i < MAX_NUM_HIJOS; i++)
{
h = (hijoSMA*) malloc (sizeof(hijoSMA));
if (h == NULL)
{
printf("crearNodoArbol: Falta memoria\n");
exit(1);
}
h->nodo = NULL;
h->repetido = FALSE;
lh->hijos[i] = h;
}
lh->numHijos = 0;
p->listaHijos = lh;
p->costeMinSucesoresOlvidados = INFINITO;
p->vuelta = FALSE;
return p;
}
void destruirNodoArbolSMA(nodoArbolSMA *p)
{
int i;
for (i = 0;i < MAX_NUM_HIJOS;i++)
{
free(p->listaHijos->hijos[i]);
}
free(p->listaHijos);
free(p->pestado);
free(p);
}
nodoListaSMA* crearNodoListaSMA(void)
{
nodoListaSMA* p;
p = (nodoListaSMA*) malloc (sizeof(nodoListaSMA));
if (p == NULL)
{
printf("crearNodoLista: Falta memoria\n");
exit(1);
}
return p;
}
void destruirNodoListaSMA(nodoListaSMA *p)
{
free(p);
}