Advertisement
Mitoeap

Lista Ordenada

Jun 14th, 2020
2,029
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.81 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. class ListaGenericaOrdenada {
  6. private:
  7.     class Nodo {
  8.     public:
  9.         int info;
  10.         Nodo *sig;
  11.     };
  12.  
  13.     Nodo *raiz;
  14. public:
  15.     ListaGenericaOrdenada();
  16.     ~ListaGenericaOrdenada();    
  17.     void insertar(int x);
  18.     void imprimir();
  19. };
  20.  
  21. ListaGenericaOrdenada::ListaGenericaOrdenada()
  22. {
  23.     raiz = NULL;
  24. }
  25.  
  26. ListaGenericaOrdenada::~ListaGenericaOrdenada()
  27. {
  28.     Nodo *reco = raiz;
  29.     Nodo *bor;
  30.     while (reco != NULL)
  31.     {
  32.         bor = reco;
  33.         reco = reco->sig;
  34.         delete bor;
  35.     }
  36. }
  37.  
  38. void ListaGenericaOrdenada::insertar(int x)
  39. {
  40.     Nodo *nuevo = new Nodo();
  41.     nuevo->info = x;
  42.     if (raiz == NULL)
  43.     {
  44.         raiz = nuevo;
  45.     }
  46.     else
  47.     {
  48.         if (x<raiz->info)
  49.         {
  50.             nuevo->sig = raiz;
  51.             raiz = nuevo;
  52.         }
  53.         else
  54.         {
  55.             Nodo *reco = raiz;
  56.             Nodo *atras = raiz;
  57.             while (x >= reco->info && reco->sig != NULL)
  58.             {
  59.                 atras = reco;
  60.                 reco = reco->sig;
  61.             }
  62.             if (x >= reco->info)
  63.             {
  64.                 reco->sig = nuevo;
  65.             }
  66.             else
  67.             {
  68.                 nuevo->sig = reco;
  69.                 atras->sig = nuevo;
  70.             }
  71.         }
  72.     }
  73. }
  74.  
  75. void ListaGenericaOrdenada::imprimir()
  76. {
  77.     Nodo *reco = raiz;
  78.     cout << "Listado completo.\n";
  79.     while (reco != NULL)
  80.     {
  81.         cout << reco->info << "-";
  82.         reco = reco->sig;
  83.     }
  84.     cout << "\n";
  85. }
  86.  
  87.  
  88. int main()
  89. {
  90.     ListaGenericaOrdenada *lista = new ListaGenericaOrdenada();
  91.     lista->insertar(10);
  92.     lista->insertar(5);
  93.     lista->insertar(7);
  94.     lista->insertar(50);
  95.     lista->imprimir();
  96.     delete lista;
  97.     return 0;
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement