Código:
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);
--
Código:
#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(']');
}
Código:
#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;
}