All pastes #991693 Raw Edit

Something

public text v1 · immutable
#991693 ·published 2008-04-21 08:04 UTC
rendered paste body
#include <iostream>
#include <conio2.h>
#include <constream>
using namespace std;
using namespace conio;

struct no {
       int elemento;
       no *proxno;
};

bool vazia(no);
void mostrar(no);
void inserirpelafrente(no *, int);
void inserirportras(no *, int);
void removerportras(no *);
void pesquisar(no *, int);
void qtdnos(no);
void removerpelafrente(no *);
void removertodos(no *);
void removereltsolicitado(no *, int);
int selelt(string);
int main(int argc, char *argv[]) {
    int op,num;
    no raiz;
    raiz.proxno = NULL;
    do {
        system("cls");
        cout<<"\n    .d8888b.                       \n";
        cout<<"   d88P  Y88b                        \n";
        cout<<"   888    888                        \n";
        cout<<"   888         888     888           \n";
        cout<<"   888       8888888 8888888         \n";
        cout<<"   888    888  888     888           \n";
        cout<<"   Y88b  d88P                        \n";
        cout<<"    \"Y8888P\"                     \n\n";
        cout<<"     /*   Matheus Mosso              \n";
        cout<<"       <msmosso@gmail.com> */        \n";
        cout<<char(218);
        for (int i=0;i<=5;i++) {
            cout<<char(196);
        }
        cout<<char(191)<<endl;
        cout<<char(179)<<" Menu "<<char(179)<<endl;
        cout<<char(195);
        for (int i=0;i<=5;i++) {
            cout<<char(196);
        }
        cout<<char(193);
        for (int i=0;i<=28;i++) {
            cout<<char(196);
        }
        cout<<char(191)<<endl;
        cout<<char(179)<<" 0 - Sair                           "<<char(179)<<endl;
        cout<<char(179)<<" 1 - Mostrar                        "<<char(179)<<endl;
        cout<<char(179)<<" 2 - Inserir pela frente            "<<char(179)<<endl;
        cout<<char(179)<<" 3 - Remover por tras               "<<char(179)<<endl;
        cout<<char(179)<<" 4 - Inserir por tras               "<<char(179)<<endl;
        cout<<char(179)<<" 5 - Remover pela frente            "<<char(179)<<endl;
        cout<<char(179)<<" 6 - Remover todos                  "<<char(179)<<endl;
        cout<<char(179)<<" 7 - Pesquisar                      "<<char(179)<<endl;
        cout<<char(179)<<" 8 - Mostrar quantidade de no       "<<char(179)<<endl;
        cout<<char(179)<<" 9 - Remover elemento solicitado    "<<char(179)<<endl;
        cout<<char(195);
        for (int i=0;i<=35;i++) {
            cout<<char(196);
        }
        cout<<char(217)<<endl;
        cout<<char(192);
        cout<<char(196)<<"> ";
        cin>>op;
        cout<<endl;
        switch (op) {
            case 0: {
                cout<<"Encerrando o sistema!!!"<<endl;
                break;
            }
            case 1: {
                if (!vazia(raiz)) {
                    mostrar(raiz);
                } else { cout<<"Lista vazia!!!"<<endl; }
                      break;
            }
            case 2: {
                num = selelt("Insercao");
                inserirpelafrente(&raiz,num);
                break;
            }
            case 3: {
                if (!vazia(raiz)) {
                    removerportras(&raiz);
                } else { cout<<"Lista esta vazia!!!"<<endl; }
                break;
            }
            case 4: {
                num = selelt("Insercao");
                inserirportras(&raiz,num);
                break;
            }
            case 5: {
                if (!vazia(raiz)) {
                    removerpelafrente(&raiz);
                } else { cout<<"Lista esta vazia!!!"<<endl; }
                break;
            }
            case 6: {
                if (!vazia(raiz)) {
                    removertodos(&raiz);
                } else { cout<<"Lista esta vazia!!!"<<endl; }
                break;
            }
            case 7: {
                if (!vazia(raiz)) {
                    num = selelt("Pesquisa");
                    pesquisar(&raiz, num);
                } else { cout<<"Lista esta vazia!!!"<<endl; }
                break;
            }
            case 8: {
                if (!vazia(raiz)) {
                    qtdnos(raiz);
                } else { cout<<"Lista esta vazia!!!"<<endl; }
                break;
            }
            case 9: {
                if (!vazia(raiz)) {
                    num = selelt("Remocao ");
                    removereltsolicitado(&raiz, num);
                } else { cout<<"Lista esta vazia!!!"<<endl; }
                break;
            }
            default: {
                cout<<"Opcao Invalida"<<endl;
                break;
            }
        }
        cout<<endl;
        system("pause");
    } while (op != 0);
    return 0;
}

bool vazia(no r) {
     return (r.proxno == NULL);
}

void mostrar(no r){
    no *nocorrente = new no;
    nocorrente = r.proxno;
    cout<<endl;
    cout<<"  Raiz ("<<r.proxno<<")"<<endl;
    cout<<"    "<<char(179)<<endl;
    cout<<"    "<<char(31)<<endl;
    while (nocorrente != NULL) {
        if (nocorrente->proxno != NULL) {
            cout<<" ["<<nocorrente->elemento<<" | "<<nocorrente->proxno<<"] "<<char(196)<<char(196)<<char(16);
        } else { cout<<" ["<<nocorrente->elemento<<" | "<<nocorrente->proxno<<"] "<<endl; }
        nocorrente = nocorrente->proxno;
    }
    cout<<endl;
}

void inserirpelafrente(no *pr, int num) {
    no *nonovo = new no;
    nonovo->elemento = num;
    if (vazia(*pr)) {
        nonovo->proxno = NULL;
    } else {
        nonovo->proxno = pr->proxno;
    }
    pr->proxno = nonovo;
}

void removerportras(no *pr) {
    /*no *nocorrente = new no;
    no *noanterior = new no;*/
    no *nocorrente;
    no *noanterior;
    nocorrente = pr->proxno;
    if (nocorrente->proxno == NULL) {
        pr->proxno = NULL;
    } else {
        while (nocorrente->proxno != NULL) {
            noanterior = nocorrente;
            nocorrente = nocorrente->proxno;
        }
        noanterior->proxno = NULL;
    }
    cout<<"  Elemento removido com sucesso!!!"<<endl;
    delete nocorrente;
}

void inserirportras(no *pr, int num) {
    no *nonovo = new no;
    //no *nocorrente = new no;
    no *nocorrente;
    nonovo->elemento = num;
    nonovo->proxno = NULL;
    if (vazia(*pr)) {
        pr->proxno = nonovo;
    } else {
        nocorrente = pr->proxno;
        while (nocorrente->proxno != NULL) {
            nocorrente = nocorrente->proxno;
        }
        nocorrente->proxno = nonovo;
    }
}

void pesquisar(no *pr, int num) {
    int non = 0;
    //no *nocorrente = new no;
    no *nocorrente;
    nocorrente = pr->proxno;
    while (nocorrente != NULL) {
        non++;
        if (nocorrente->elemento == num) {
            cout<<endl<<endl<<"  Elemento encontrado no "<<non<<"o no"<<endl;
            return;
        } else {
            nocorrente = nocorrente->proxno;
        }
    }
    cout<<endl<<endl<<"  Elemento nao encontrado!!!"<<endl;
}

void removerpelafrente(no *pr) {
    //no *nocorrente = new no;
    no *nocorrente;
    nocorrente = pr->proxno;
    if (nocorrente == NULL) {
        pr->proxno=NULL;
    } else {
        pr->proxno = nocorrente->proxno;
    }
    cout<<"  Elemento removido com sucesso!!!"<<endl;
    delete nocorrente;
}

void removereltsolicitado(no *pr, int num) {
    /*no *nocorrente = new no;
    no *noanterior = new no;*/
    no *nocorrente;
    no *noanterior;
    nocorrente = pr->proxno;
    noanterior = pr;
    if (nocorrente->proxno == NULL) {
        pr->proxno = NULL;
    }
    while (nocorrente != NULL) {
        if (nocorrente->elemento == num) {
            noanterior->proxno = nocorrente->proxno;
            cout<<endl<<endl<<"  Elemento removido com sucesso!!!"<<endl;
            return;
        }
        noanterior = nocorrente;
        nocorrente = nocorrente->proxno;
    }
    cout<<endl<<endl<<"  Elemento nao encontrado!!!"<<endl;
    delete nocorrente;
}

void qtdnos(no pr) {
    int non = 0;
    //no *nocorrente = new no;
    no *nocorrente;
    nocorrente = pr.proxno;
    while (nocorrente->proxno != NULL) {
        non++;
        nocorrente = nocorrente->proxno;
    }
    non++;
    cout<<"  Quantidade de nos: "<<non<<endl;
}

void removertodos(no *pr) {
    while (pr->proxno != NULL) {
        removerportras(pr);
    }
    cout<<endl<<"  Todos elementos foram removidos com sucesso!!!"<<endl;
}

int selelt(string titulo) {
    int num;
    cout<<char(218);
    for (int i=0;i<=9;i++) {
        cout<<char(196);
    }
    cout<<char(191)<<endl;
    cout<<char(179)<<" "<<titulo<<" "<<char(179)<<endl;
    cout<<char(195);
    for (int i=0;i<=9;i++) {
        cout<<char(196);
    }
    cout<<char(193);
    cout<<char(196)<<char(196)<<char(196)<<char(196);
    cout<<char(191)<<endl;
    cout<<char(179)<<" Elemento: ";
    gotoxy(17,32);
    cout<<char(179)<<endl<<char(192);
    for (int i=0;i<=14;i++) {
        cout<<char(196);
    }
    cout<<char(217);
    gotoxy(13,32);
    cin>>num;
    return num;
}