Facebook
From FABIO SILVA RAMOS, 3 Years ago, written in C++.
This paste is a reply to ListaEncadeadaSimples_B_3 from FABIO SILVA RAMOS - view diff
Embed
Download Paste or View Raw
Hits: 109
  1. //      LISTA ENCADEADA SIMPLES
  2.  
  3. #include <iostream>
  4. #include <conio.h>
  5. #include <stdlib.h>
  6. #include <locale.h>
  7.  
  8. using namespace std;
  9.  
  10. int main(){
  11.     setlocale(LC_ALL, "Portuguese");
  12.  
  13.     struct LISTA{
  14.         int num;
  15.         LISTA *prox;
  16.     };
  17.  
  18.     LISTA *inicio = NULL;
  19.     LISTA *fim = NULL;
  20.  
  21.     LISTA *aux;
  22.     LISTA *anterior;
  23.  
  24.     int op, numero, achou;
  25.  
  26.     do{
  27.         system("cls");
  28.         cout<<"\nMenu de OPÇÕES\n";
  29.         cout<<"\n1 - Inserir no início da lista";
  30.         cout<<"\n2 - Inserir no fim da lista";
  31.         cout<<"\n3 - Consultar toda a lista";
  32.         cout<<"\n4 - Remover da lista";
  33.         cout<<"\n5 - Esvaziar a lista";
  34.         cout<<"\n6 - Sair";
  35.         cout<<"\nDigite a sua opção: ";
  36.         cin>>op;
  37.  
  38.         if(op <1 || op>6){
  39.             cout<<"Opção Inválida\n";
  40.             getch();
  41.         }
  42.         //Inserir no inicio
  43.         if(op ==1){
  44.             cout<<"\nDigite o número a ser inserido no início da lista: ";
  45.             LISTA *novo = new LISTA();
  46.             //cin>>*novo.num;
  47.             cin>>novo->num;
  48.             if(inicio == NULL){
  49.                 inicio = novo;
  50.                 fim = novo;
  51.                 fim->prox = NULL;
  52.             }else{
  53.                 novo->prox=inicio;
  54.                 inicio=novo;
  55.             }
  56.             cout<<"Numero inserido no início da lista";
  57.             getch();
  58.         }
  59.         //Inserir no fim
  60.         if(op == 2){
  61.             cout<<"\nDigite o número a ser inserido no fim da lista: ";
  62.             LISTA *novo =  new LISTA();
  63.             cin>>novo->num;
  64.             if(inicio == NULL){
  65.                 inicio = novo;
  66.                 fim = novo;
  67.                 fim->prox = NULL;
  68.             }
  69.             else{
  70.                 fim->prox = novo;
  71.                 fim = novo;
  72.                 fim->prox = NULL;
  73.             }
  74.             cout<<"Número inserido no fim da lista";
  75.             getch();
  76.         }
  77.         //Consultar  toda a lista
  78.         if(op==3){
  79.             if(inicio == NULL){
  80.                 cout<<"Lista  vazia\n";
  81.                 getch();
  82.             }
  83.             else{
  84.                 cout<<"\nConsultando toda a lista\n";
  85.                 aux = inicio;
  86.                 while(aux !=NULL){
  87.                     cout<<aux->num<<" ";
  88.                     aux = aux->prox;
  89.                 }
  90.                 getch();
  91.             }
  92.         }
  93.         //Remover numero da lista
  94.         if(op == 4){
  95.             if(inicio == NULL){
  96.                 cout<<"Lista vazia\n";
  97.                 getch();
  98.             }
  99.             else{
  100.                 cout<<"\nDigite o numero a ser removido: ";
  101.                 cin>>numero;
  102.                 aux = inicio;
  103.                 anterior = NULL;
  104.                 achou = 0;
  105.  
  106.                 while(aux != NULL){
  107.                     if(aux->num == numero){
  108.                         achou++;
  109.                         if(aux == inicio){
  110.                             inicio = aux->prox;
  111.                             delete(aux);
  112.                             aux = inicio;
  113.                         }else if(aux == fim){
  114.                             anterior->prox = NULL;
  115.                             fim = anterior;
  116.                             delete(aux);
  117.                             aux = NULL;
  118.                         }
  119.                         else{
  120.                             anterior->prox = aux->prox;
  121.                             delete(aux);
  122.                             aux  = anterior->prox;
  123.                         }
  124.                     }
  125.                     else{
  126.                         anterior  = aux;
  127.                         aux= aux->prox;
  128.                     }
  129.                 }
  130.                 if(achou == 0){
  131.                     cout<<"Número não encontrado\n";
  132.                     getch();
  133.                 }
  134.                 else if(achou == 1){
  135.                     cout<<"Número removido 1 vez\n";
  136.                     getch();
  137.                 }
  138.                 else{
  139.                     cout<<"Número removido "<<achou<<" vezes\n";
  140.                     getch();
  141.                 }
  142.             }
  143.         }
  144.         //Limpar a lista
  145.         if(op == 5){
  146.             if(inicio == NULL){
  147.                 cout<<"Lista vazia\n";
  148.                 getch();
  149.             }
  150.             else{
  151.                 aux = inicio;
  152.                 while(aux != NULL){
  153.                     inicio = inicio->prox;
  154.                     delete(aux);
  155.                     aux =  inicio;
  156.                 }
  157.                 cout<<"Lista esvaziada\n";
  158.                 getch();
  159.             }
  160.         }
  161.  
  162.     }while(op != 6);
  163.  
  164.         system("pause");
  165.         return 0;
  166. }
  167.