Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - elProfeta1979

#1
Programación C/C++ / Lista Genérica en c
10 Octubre 2014, 18:25 PM
que les parece mi implementación?




typedef enum _TIPO
{

 INT = 0,
 FLOAT,
 STRING

} TIPO;

typedef struct _NODO_LISTA
{

 TIPO   tipo;

 int    dato_int;
 float  dato_float;

 char   *dato_s;

 struct NODO_LISTA *sig;

} NODO_LISTA;


typedef NODO_LISTA *ListaGenerica;

ListaGenerica LGListaVacia();

ListaGenerica LGApilarInt(ListaGenerica l, int var);

ListaGenerica LGApilarFloat(ListaGenerica l, float var);

ListaGenerica LGApilarString(ListaGenerica l, char* var);

void LGImprimirEnPantalla(ListaGenerica l);




--


#include <stdio.h>
#include "ListaGenerica.h"

ListaGenerica LGListaVacia()
{
  return NULL;
}

ListaGenerica LGApilarInt(ListaGenerica l, int var)
{
  ListaGenerica p;
  p = (ListaGenerica)malloc(sizeof(NODO_LISTA));
  p->dato_int = var;
  p->tipo = INT;

  if(l==NULL){
    p->sig = NULL;
  }else{
    p->sig = l;
  }

  return p;
}

ListaGenerica LGApilarFloat(ListaGenerica l, float var)
{
  ListaGenerica p;
  p = (ListaGenerica)malloc(sizeof(NODO_LISTA));
  p->dato_float = var;
  p->tipo = FLOAT;

  if(l==NULL){
    p->sig = NULL;
  }else{
    p->sig = l;
  }

  return p;
}

ListaGenerica LGApilarString(ListaGenerica l, char *var)
{
  ListaGenerica p;
  p = (ListaGenerica)malloc(sizeof(NODO_LISTA));
  p->dato_s = var;
  p->tipo = STRING;

  if(l==NULL){
    p->sig = NULL;
  }else{
    p->sig = l;
  }

  return p;
}

void LGImprimirEnPantalla(ListaGenerica l)
{
  putchar('[');
  while(l != NULL)
  {
    if(l->tipo==INT)
      printf("%d", l->dato_int);

    else if(l->tipo==FLOAT)
      printf("%f", l->dato_float);

    else if (l->tipo==STRING)
      printf("%s", l->dato_s);

    if (l->sig != NULL)
      printf(", ");

    l=l->sig;
  }
  putchar(']');
}





#include "ListaGenerica.h"

int main()
{
  ListaGenerica l;
  l = LGListaVacia();
  l = LGApilarInt(l, 2);
  l = LGApilarInt(l, 20);
  l = LGApilarInt(l, 21);
  l = LGApilarInt(l, 12);
  l = LGApilarInt(l, 22);
  l = LGApilarFloat(l, 42.41);
  l = LGApilarFloat(l, 242.41);
  l = LGApilarFloat(l, 342.41);
  l = LGApilarString(l, "Pila");
  l = LGApilarString(l, "Generica");
  l = LGApilarString(l, "Anno 2014");

  LGImprimirEnPantalla(l);

  return 0;
}

#2
Programación C/C++ / Consulta argumentos
20 Diciembre 2013, 21:12 PM
hay ventajas en hacer este tipo de declaraciones ?


static int
compare (const void *a, const void *b)
{
  return strcmp (*(char **) a, *(char **) b);
}