Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2019
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.83 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <fstream>
  4. #include <stdlib.h>
  5.  
  6. using namespace std;
  7.  
  8.  
  9. template <class T>
  10.     class nodo{
  11.         public:
  12.             T info;
  13.             nodo<T>* next, *prev;
  14.  
  15.         nodo * nod(T a){
  16.             info = a;
  17.             nodo * next = NULL;
  18.             nodo * prev = NULL;
  19.         }
  20.  
  21.         void imprimir(){
  22.             cout << "Mostrar "<< info <<" \n";
  23.         }
  24.     };
  25.  
  26.  
  27.  
  28. template <class T>
  29.     class lista : public nodo<T>{
  30.         private:
  31.             nodo<T> * inicio, * ultimo;
  32.  
  33.         public:
  34.             nodo<T> * newnodo(T info){
  35.                 nodo<T> * n;
  36.                 n->nod(info);
  37.                 n->next = NULL;
  38.                 n->prev = NULL;
  39.                 return n;
  40.             }
  41.  
  42.             void insertar(T info){
  43.                 nodo<T> * aux = newnodo(info);
  44.                 if(inicio == NULL){
  45.                     inicio = aux;
  46.                     ultimo = aux;
  47.                 }else{
  48.                     nodo<T> * actual = inicio;
  49.                     if(actual->next == NULL){
  50.                         actual->next = aux;
  51.                         aux->prev = actual;
  52.                         ultimo = aux;
  53.                     }else{
  54.                         while(actual->next->next != NULL){
  55.                             actual = actual->next;
  56.                         }
  57.                         actual->next->next = aux;
  58.                         aux->prev = actual->next;
  59.                         ultimo = aux;
  60.                     }
  61.                 }
  62.             }
  63.  
  64.             void mostrart(){
  65.                 if(inicio == NULL){
  66.                     cout << "No hay nada que mostrar \n";
  67.                 }else{
  68.                     nodo<T> * actual = inicio;
  69.                     while(actual->next != NULL){
  70.                         actual->imprimir();
  71.                         //cout << "Mostrar "<< actual->info <<" \n";
  72.                         actual = actual->next;
  73.                     }
  74.                     cout << "Mostrar "<< actual->info <<" \n";
  75.                 }
  76.  
  77.             }
  78.             void mostrart2(){
  79.                 if(ultimo == NULL){
  80.                     cout << "No hay nada que mostrar \n";
  81.                 }else{
  82.                     nodo<T> * actual = ultimo;
  83.                     while(actual->prev != NULL){
  84.                         actual->imprimir();
  85.                         //cout << "Mostrar "<< actual->info <<" \n";
  86.                         actual = actual->prev;
  87.                     }
  88.                     cout << "Mostrar "<< actual->info <<" \n";
  89.                 }
  90.             }
  91.                
  92.  
  93.  
  94.  
  95.  
  96.     };
  97.  
  98. template <class T>
  99.     class cola : public lista<T>{
  100.         void insertarultimo(T info){
  101.             lista<T>::insertar(info);
  102.         }
  103.     public:
  104.         void mostrart(){
  105.             lista<T>::mostrart();
  106.         }
  107.  
  108.     };
  109.  
  110.  
  111.  
  112. lista<string> lis;
  113. cola<string> col;
  114.  
  115. void caso1(){
  116.     string cont;
  117.     cout << "Inserte algo\n";
  118.     cin >> cont;
  119.     lis.insertar(cont);
  120. }
  121. void caso4(){
  122.     string cont;
  123.     cout << "Inserte algo\n";
  124.     cin >> cont;
  125.     col.insertar(cont);
  126. }
  127.  
  128.  
  129. int main(){
  130.     int a = 1;
  131.     while(a != 0){
  132.         cout << "Inserte 1 para insertar, 2 para mostrar todo de primero a ultimo,\n 3 para mostrar todo de ultimo a primero, 4 para insertar en cola \n 5 paramostrartodoen la cola, 0 para salir \n";
  133.         cin >> a;
  134.         switch (a){
  135.             case 1:
  136.                 caso1();
  137.                 break;
  138.  
  139.             case 2:
  140.                 lis.mostrart();
  141.                 break;
  142.             case 3:
  143.                 lis.mostrart2();
  144.                 break;
  145.             case 4:
  146.                 caso4();
  147.                 break;
  148.  
  149.  
  150.             case 5:
  151.                 col.mostrart();
  152.                 break;
  153.         }
  154.     }
  155.  
  156.  
  157.  
  158. return 0;
  159. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement