#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// #3 + 3 PUNTOS
// PARA EL 31 DE MARZO
struct Nodo
{
char *Dato;
struct Nodo *Sig;
};
struct Nodo *Inicio = NULL;
struct Nodo *CreaNodo() { return (struct Nodo*)malloc(sizeof(struct Nodo)); }
void Guardar(char *cad)
{
cad++;cad++;
struct Nodo *new = CreaNodo(), *AUX;
new->Dato = (char*)malloc(sizeof(char)*80);
strcpy(new->Dato, cad);
new->Sig = NULL;
if ( !Inicio ) Inicio = new; // ¿ERES EL PRIMERO?
else
{
// new->Sig = Inicio; Inicio = new; // AL PRINCIPIO
AUX = Inicio;
while ( AUX->Sig ) AUX = AUX->Sig;
AUX->Sig = new;
}
}
void Mostrar()
{
struct Nodo *AUX = Inicio;
while ( AUX )
{
printf("%s\n", AUX->Dato);
AUX = AUX->Sig;
}
}
/*
int Mostrar(struct Nodo *aux)
{
if ( !aux->Sig ) return 1;
Mostrar( aux = aux->Sig );
printf("%s\n", aux->Dato);
}
*/
int Buscar(char *cad)
{
struct Nodo *aux = Inicio;
cad++; cad++; cad++;
while( aux )
{
if ( !strcmp(cad, aux->Dato) ) return 1;
aux = aux->Sig;
}
return 0;
}
void Borrar(char *cad) {
//printf("0paso");
struct Nodo *aux, *aux2;
aux = aux2 = Inicio;
cad++; cad++; cad++;
while(aux){
if(!strcmp(cad,aux->Dato))
{
// ¿Eres el primero?
if ( aux == Inicio ) Inicio = Inicio->Sig;
// eres el último??
else if ( !aux->Sig ) aux2->Sig = NULL;
else // entonces está en medio
aux2->Sig = aux->Sig;
}
aux2 = aux;
aux = aux->Sig;
}
}
int ciclo()
{
char *Operacion = (char*)malloc(sizeof(char)*80);
while ( 1 )
{
printf("G cad\tBO cad\tBU cad\tM\tS\n");
printf("==> "); gets(Operacion);
if ( Operacion[0] == 'S' ) return 1;
switch(Operacion[0])
{
case 'G': Guardar(Operacion); break;
case 'B': if (Operacion[1] == 'O') Borrar(Operacion);
else if (Buscar(Operacion) ) printf("Si lo encontré ...\n");
break;
case 'M': Mostrar(); //Mostrar(Inicio); printf("%s\n", Inicio->Dato);
}
}
}
main() { ciclo(); }