Advertisement
Guest User

Lista Circular falta remover

a guest
Dec 6th, 2018
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.85 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. struct no
  5. {
  6.     int info;
  7.     struct no*prox;
  8.     struct no*ant;
  9. };
  10.  
  11. typedef struct no* noPtr;
  12. noPtr inicio = NULL;
  13.  
  14.  
  15. // Escopo das funcoes
  16.  
  17. int menu();
  18. bool listaVazia();
  19. void inserir();
  20. void listar();
  21. void remover();
  22.  
  23. // termino do escopo
  24.  
  25. int main()
  26. {
  27.     int valor;
  28.     do
  29.     {
  30.         valor = menu();
  31.         switch(valor)
  32.         {
  33.         case 1:
  34.             inserir();
  35.             break;
  36.         case 2:
  37.             listar();
  38.             break;
  39.         case 3:
  40.             remover();
  41.             break;
  42.         case 0:
  43.             break;
  44.         }
  45.     }
  46.     while(valor != 0);
  47.  
  48.  
  49.  
  50.     return 0;
  51. }
  52.  
  53.  
  54. int menu()
  55. {
  56.     int op;
  57.     cout << "Digite um numero para comecar\n ";
  58.     cout << "Digite 1 para inserir " << endl;
  59.     cout << "Digite 2 para listar " << endl;
  60.     cout << "Digite 3 para remover " << endl;
  61.  
  62.     cin >> op;
  63.     return op;
  64.  
  65. }
  66.  
  67. bool listaVazia()
  68. {
  69.     if(inicio == NULL)
  70.         return true;
  71.     else
  72.     {
  73.         return false;
  74.     }
  75. }
  76.  
  77. void inserir ()
  78. {
  79.     noPtr p = new no;
  80.     cout << "Digite um numero que queira inserir na lista " << endl;
  81.  
  82.     cin >> p->info;
  83.  
  84.     if(listaVazia())
  85.     {
  86.         inicio = p;
  87.         p->prox = inicio;
  88.         p->ant = inicio;
  89.     }
  90.     else
  91.     {
  92.         p->ant = inicio->ant;
  93.         p->prox = inicio;
  94.         inicio->ant->prox = p;
  95.         inicio->ant = p;
  96.  
  97.         inicio = p;
  98.  
  99.     }
  100. }
  101.  
  102. void listar()
  103. {
  104.     if(!listaVazia())
  105.     {
  106.         noPtr aux = inicio;
  107.         do
  108.         {
  109.             cout << aux->info << endl;
  110.             aux = aux->prox;
  111.  
  112.         }
  113.         while(aux != inicio);
  114.     }
  115.     else
  116.     {
  117.         cout << "Lista Vazia ! \n";
  118.     }
  119.  
  120. }
  121.  
  122. void remover()
  123. {
  124.  
  125.     if(!listaVazia())
  126.     {
  127.  
  128.         cout << "Digite um numero para remover, caso ele exista " << endl;
  129.  
  130.         int num;
  131.         cin >> num;
  132.  
  133.         noPtr aux = inicio;
  134.  
  135.         do
  136.         {
  137.  
  138.             if( aux->info == num )
  139.             {
  140.  
  141.                 aux->prox->ant = aux->ant;
  142.                 aux->ant->prox = aux->prox;
  143.                 delete(aux);
  144.                
  145.                 if( aux == inicio )
  146.                     inicio = NULL;
  147.  
  148.                 break;
  149.  
  150.             }
  151.  
  152.             aux = aux->prox;
  153.  
  154.         }
  155.         while( aux != inicio );
  156.     }
  157. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement