/*
 * clases_que maneja una pila FIFO utilizando lista enlazada simple
 * 
 * Copyright 2021 Germán Andrés Xander
 * 
 */

#include <iostream>
using namespace std;

struct datos{
    float x;
    struct datos *sig;
};

class driver{
    private:
        datos *lista=NULL;
    public:
        void insertar();
        void sacar();
        void mostrar();
};

int main(int argc, char *argv[]) {
    char selec;
    driver fifo;
    do{
        cout<<endl<<"|| -Menú- ||"<<endl;
        cout<<"seleccione:"<<endl;
        cout<<"1-insertar"<<endl;
        cout<<"2-sacar"<<endl;
        cout<<"3-mostrar"<<endl;
        cout<<"s-salir"<<endl;
        cin>>selec;
        switch(selec) {
            case '1':
                fifo.insertar();
                break;
            case '2':
                fifo.sacar();
                break;
            case '3':
                fifo.mostrar();
                break;
            default:
                if(selec!='s' && selec!='S'){
                    cout<<"opcion incorrecta, reingrese"<<endl;
                }
        }
    }while(selec!='s' && selec!='S');
    return 0;
}

void driver::insertar(){
    float n;
    cout<<endl<<"ingrese un numero"<<endl;
    cin>>n;
    datos *nuevo_nodo=new datos;
    nuevo_nodo->x=n;
    nuevo_nodo->sig=lista;
    lista=nuevo_nodo;
}

void driver::sacar(){
    if(lista){
        datos *aux_borrar=lista;
        datos *anterior=NULL;
        
        while(aux_borrar->sig){
            anterior=aux_borrar;
            aux_borrar=aux_borrar->sig;
        }

        delete aux_borrar;
        if(anterior){
            anterior->sig=NULL;
        }else{
            lista=NULL;
        }
    }
}

void driver::mostrar(){
    datos *copia=lista;
    cout<<endl<<"lista FIFO:"<<endl;
    while(copia){
        cout<<copia->x;
        copia=copia->sig;
        if(copia){
            cout<<" --> ";
        }else{
            cout<<" |";
        }
    }
    cout<<endl;
}
Last modified: Friday, May 28, 2021, 8:35 AM