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);
}