martes, 20 de marzo de 2018

Lista doblemente enlazada mostrar de primero a ultimo y viceversa

#include<iostream>
using namespace std;

struct ListaD{
    int info;
    struct ListaD *sig;
    struct ListaD *ant;
};

void crearCabLD(struct ListaD *&cab,int info){
    cab=new ListaD;
    cab->info=info;
    cab->sig=cab->ant=NULL;
}

void agregarNodoLD(struct ListaD *&cab,int info){
    struct ListaD *aux=cab;
    while(aux->sig){
        aux=aux->sig;
    }
    aux->sig=new ListaD;
    aux->sig->ant=aux;
    aux=aux->sig;
    aux->info=info;
    aux->sig=NULL;
}

void crearListaLD(struct ListaD *&cab){
    int info=666;
    while(info>0){
        cout<<endl<<"Dato: ";
        cin>>info;
        if(info>0){
            if(!cab){
                crearCabLD(cab,info);
            }
            else{
                agregarNodoLD(cab,info);
            }
        }
    }
}

void Mostrar(struct ListaD *&cab){
    struct ListaD *aux=cab;
    while(aux->sig!=NULL){
        cout<<aux->info<<"\t";
        aux=aux->sig;
    }
    cout<<aux->info<<"\t\n";

    while(aux!=cab){
        cout<<aux->info<<"\t";
        aux=aux->ant;
    }
    cout<<aux->info<<"\t";
}

main(){
    struct ListaD *cab=NULL;
    crearListaLD(cab);
    Mostrar(cab);
}

No hay comentarios:

Publicar un comentario