martes, 17 de enero de 2012

Examen 2

#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