Facebook
From FABIO SILVA RAMOS, 3 Years ago, written in C++.
This paste is a reply to ListaEncadeadaSimples_B_3 from FABIO SILVA RAMOS - go back
Embed
Viewing differences between ListaEncadeadaSimples_B_3 and ListaEncadeadaSimples_B_4
//      LISTA ENCADEADA SIMPLES

#include 
#include 
#include 
#include 

using namespace std;

int main(){
    setlocale(LC_ALL, "Portuguese");

    struct LISTA{
        int num;
        LISTA *prox;
    };

    LISTA *inicio = NULL;
    LISTA *fim = NULL;

    LISTA *aux;
    LISTA *anterior;

    int op, numero, achou;

    do{
        system("cls");
        cout<<"\nMenu de OPÇÕES\n";
        cout<<"\n1 - Inserir no início da lista";
        cout<<"\n2 - Inserir no fim da lista";
        cout<<"\n3 - Consultar toda a lista";
        cout<<"\n4 - Remover da lista";
        cout<<"\n5 - Esvaziar a lista";
        cout<<"\n6 - Sair";
        cout<<"\nDigite a sua opção: ";
        cin>>op;

        if(op <1 || op>6){
            cout<<"Opção Inválida\n";
            getch();
        }

}
        //Inserir no inicio
        if(op ==1){
            cout<<"\nDigite o número a ser inserido no início da lista: ";
            LISTA *novo = new LISTA();
            //cin>>*novo.num;
            cin>>novo->num;
            if(inicio == NULL){
                inicio = novo;
                fim = novo;
                fim->prox = NULL;
            }else{
                novo->prox=inicio;
                inicio=novo;
            }
            cout<<"Numero inserido no início da lista";
            getch();
        }

}
        //Inserir no fim
        if(op == 2){
            cout<<"\nDigite o número a ser inserido no fim da lista: ";
            LISTA *novo =  new LISTA();
            cin>>novo->num;
            if(inicio == NULL){
                inicio = novo;
                fim = novo;
                fim->prox = NULL;
            }
            else{
                fim->prox = novo;
                fim = novo;
                fim->prox = NULL;
            }
            cout<<"Número inserido no fim da lista";
            getch();
        }

}
        //Consultar  toda a lista
        if(op==3){
            if(inicio == NULL){
                cout<<"Lista  vazia\n";
                getch();
            }
            else{
                cout<<"\nConsultando toda a lista\n";
                aux = inicio;
                while(aux !=NULL){
                    cout<num<<" ";
                    aux = aux->prox;
                }
                getch();
            }
        }
        //Remover numero da lista
        if(op == 4){
            if(inicio == NULL){
                cout<<"Lista vazia\n";
                getch();
            }
            else{
                cout<<"\nDigite o numero a ser removido: ";
                cin>>numero;
                aux = inicio;
                anterior = NULL;
                achou = 0;

                while(aux != NULL){
                    if(aux->num == numero){
                        achou++;
                        if(aux == inicio){
                            inicio = aux->prox;
                            delete(aux);
                            aux = inicio;
                        }else if(aux == fim){
                            anterior->prox = NULL;
                            fim = anterior;
                            delete(aux);
                            aux = NULL;
                        }
                        else{
                            anterior->prox = aux->prox;
                            delete(aux);
                            aux  = anterior->prox;
                        }
                    }
                    else{
                        anterior  = aux;
                        aux= aux->prox;
                    }
                }
                if(achou == 0){
                    cout<<"Número não encontrado\n";
                    getch();
                }
                else if(achou == 1){
                    cout<<"Número removido 1 vez\n";
                    getch();
                }
                else{
                    cout<<"Número removido "<                     getch();
                }
            }
        }
        //Limpar a lista
        if(op == 5){
            if(inicio == NULL){
                cout<<"Lista vazia\n";
                getch();
            }
            else{
                aux = inicio;
                while(aux != NULL){
                    inicio = inicio->prox;
                    delete(aux);
                    aux =  inicio;
                }
                cout<<"Lista esvaziada\n";
                getch();
            }
        }

    }while(op != 6);

        system("pause");
        return 0;
}