#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <stdlib.h>
#include <string.h>
struct lista1 {
char nombre [30];
struct lista1 *sig;
};
typedef struct lista1 LISTA;
typedef LISTA *LISTAPTR;
void menu();//declarar funciones
void insertar (LISTAPTR*,char[]);
char eliminar(LISTAPTR*,char[]);
void imprimir(LISTAPTR);
int estavacia(LISTAPTR);
main(){
LISTAPTR principio = NULL;
LISTAPTR final = NULL;
int opcion;
char item[30];
do{
menu();
printf("\n\n\n\tSelecciona una opcion: ");
scanf("%d", &opcion);
switch(opcion){
case 1:
fflush(stdin);
system("cls");
printf("\n\n\tIngresa un nombre : ");
scanf("%s", item);
insertar (&final,item);
imprimir(final);
break;
case 2:
imprimir(final);
getch();
break;
case 3:
if (estavacia(principio)){
printf ("imprimir la cadena a eliminar: ");
scanf("\n%s ", item);
if(eliminar(&principio,item)){
printf("%s Eliminado.\n" ,item);
}
else
printf ("%s no se encontro.\n\n",item);
}
else
printf("La lista esta vacia\n\n");
break;
}
getch();
}while(opcion!=4);
getch();
}
void menu(){
system("cls");
printf("\n\n\t\t*** FILA ***");
printf("\n\t\t1)Insertar un miembro en la fila.");
printf("\n\t\t2)Imprimir la fila.");
printf("\n\t\t3)eliminar una fila");
printf("\n\t\t4)Salir.");
}
void insertar (LISTAPTR *sptr, char caracter[]){
LISTAPTR nuevo,principio,final;
nuevo = malloc (sizeof(LISTA));
if(nuevo != NULL)
{
strcpy( nuevo -> nombre,caracter);
nuevo -> sig = NULL;
principio=NULL;
final=*sptr;
while (final!=NULL && strcmp(caracter, final->nombre) > 0 ){
principio=final;
final=final->sig;
}
if (principio == NULL){
nuevo->sig=*sptr;
*sptr=nuevo;
}
else{
principio->sig=nuevo;
nuevo->sig=final;
}
}
}
void imprimir(LISTAPTR final)
{
if (final == NULL)
printf (" La lista esta vacia");
else {
printf("la lista es :\n");
while (final!=NULL){
printf (" %s \n",final->nombre);
final=final->sig;
}
}
}
char eliminar(LISTAPTR *sptr,char valor[]){
LISTAPTR principio,final,aux1;
if (valor==(*sptr)->nombre){
aux1=*sptr;
*sptr=(*sptr)->sig;
free(aux1);
return valor;
}
else{
principio=*sptr;
final = (*sptr)->sig;
while (final != NULL && final -> nombre!=valor){
principio = final;
final=final->sig;
}
if(final!=NULL){
aux1 =final;
principio->sig=final->sig;
free(aux1);
return valor;
}
}
return '\0';
}
int estavacia(LISTAPTR sptr){
return sptr==NULL;
}
No hay comentarios:
Publicar un comentario