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;
}