Lista - Enrique Galindo Cárdenas

Embed Size (px)

Citation preview

  • 8/3/2019 Lista - Enrique Galindo Crdenas

    1/3

    Lista Enrique Galindo Crdenas

    #include #include #include

    struct Nodo{char info;struct Nodo *sig;};

    typedef struct Nodo nodo;typedef nodo * nodoAp;

    void inserta(nodoAp*,char);char elimina(nodoAp*,char);int listaVacia(nodoAp);void imprimeLista(nodoAp);

    int main(void){

    nodoAp inicioPtr=NULL;int opcion;char x;printf ("\nSelecciona una Opcion");printf ("\n1...Inserta");printf ("\n2...Borra");printf ("\n3...Fin");while(opcion!=3){

    printf ("\n?");scanf ("%d",&opcion);fflush(stdin);if(opcion==1){

    printf ("\n Elemento a Insertar:");scanf ("%c",&x);

    inserta (&inicioPtr,x);imprimeLista(inicioPtr);}else if(opcion==2){

    if(!listaVacia(inicioPtr)){printf ("\nCaracter a Borrar = ");

    scanf ("\n%c",&x);if (elimina(&inicioPtr,x)==x){

    printf ("\nSe Elimino a %c\n",x);imprimeLista(inicioPtr);}

    else{

    printf ("\n%c No esta en Lista",x);}}

    else{printf ("\nLista Vacia");}

    }else{

    printf ("\nOpccion Invalida");}

  • 8/3/2019 Lista - Enrique Galindo Crdenas

    2/3

    }//fin de while}

    void inserta (nodoAp *inicioPtr,char x){nodoAp nuevo,antes,aqui;

    nuevo=(nodoAp)malloc(sizeof(nodo));if (nuevo!=NULL){

    nuevo->info=x;nuevo->sig=NULL;antes=NULL;aqui=*inicioPtr;while(aqui!=NULL&&x>aqui->info){

    antes=aqui;aqui=aqui->sig;}

    if (antes==NULL){nuevo->sig=*inicioPtr;*inicioPtr=nuevo;}

    else{antes->sig=nuevo;nuevo->sig=aqui;}}

    elseprintf ("Falta Memoria");

    }

    char elimina (nodoAp *inicioPtr,char x){nodoAp antes,aqui;char r;if (xinfo)

    r='\0';else{

    antes=NULL;aqui=*inicioPtr;while(aqui!=NULL&&x>aqui->info){

    antes=aqui;aqui=aqui->sig;}

    if (aqui!=NULL&&x==aqui->info){r=aqui->info;if (antes==NULL)

    *inicioPtr=aqui->sig;else

    antes->sig=aqui->sig;free(aqui);}

    elser='\0';}

    return r;}

  • 8/3/2019 Lista - Enrique Galindo Crdenas

    3/3

    int listaVacia(nodoAp inicioPtr){return inicioPtr==NULL;}

    void imprimeLista(nodoAp inicioPtr){nodoAp auxPtr;auxPtr=inicioPtr;printf ("\nInicioPtr--> ");while(auxPtr!=NULL){

    printf ("%c--> ",auxPtr->info);auxPtr=auxPtr->sig;}printf ("NULL\n");}