Advertisement
gallopelado

Listas enlazadas

Oct 18th, 2013
354
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.66 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstring>
  4. #include <cstdlib>
  5.  
  6. using namespace std;
  7.  
  8. struct dato
  9.     {
  10.     int num;
  11.     struct dato*sgte;
  12.     };
  13.  
  14. dato*crear_nodo(void);
  15. dato*insertar(dato*c);
  16. void imprimir(dato*c);
  17. dato*borrar(dato*c);
  18.  
  19. int main()
  20. {
  21.     dato*c=NULL;
  22.     system("clear");//* para borrar pantalla*/
  23.     int op;
  24.  
  25.         do
  26.         {
  27.             cout<<"Menu principal..."<<endl;
  28.             cout<<"1- Ingresar datos..."<<endl;
  29.             cout<<"2- Imprimir datos..."<<endl;
  30.             cout<<"3- Borrar un dato.."<<endl;
  31.             cout<<"4- SALIR"<<endl;
  32.             cout<<"Ingrese una opción...";cin>>op;
  33.  
  34.                 switch(op)
  35.                 {
  36.                     case 1:
  37.                         c=insertar(c);
  38.                     break;
  39.  
  40.                     case 2:
  41.                         imprimir(c);
  42.                     break;
  43.  
  44.                     case 3:
  45.                         c=borrar(c);
  46.                     break;
  47.  
  48.                 }
  49.         }while(op!=4);
  50.         return 0;
  51. }
  52.  
  53.  
  54. dato*crear_nodo(void)
  55. {
  56.     dato*q;
  57.     q=(dato*)malloc(sizeof(dato));//malloc libera espacio en la memoria
  58.         if(q==NULL)
  59.         {
  60.             cout<<"No se reservó espacio en memoria..";
  61.         }
  62.         return q;
  63. }
  64.  
  65. dato*insertar(dato*c)
  66. {
  67.     int n;
  68.     dato*q=NULL;
  69.     q=crear_nodo();
  70.         if(q==NULL)
  71.         {
  72.             cout<<"No se reservo espacio en memoria...";
  73.  
  74.         }
  75.         else
  76.         {
  77.             cout<<"Ingrese num= ";
  78.             cin>>q->num;
  79.             q->sgte=c;
  80.             c=q;
  81.         }
  82.         return c;
  83. }
  84.  
  85. void imprimir(dato*c)
  86. {
  87.     while(c!=NULL)
  88.     {
  89.         cout<<"El num es: "<<c->num<<endl;
  90.         c=c->sgte;
  91.     };
  92. }
  93.  
  94.  
  95. dato*borrar(dato*b)
  96. {
  97.     int nv;
  98.     dato*bo=NULL,*e=NULL,*aux=NULL,*borrar=NULL,*copia=NULL;
  99.     copia=b;
  100.     int k=0;
  101.     cout<<"Ingrese num a borrar...";cin>>nv;
  102.  
  103.         while(b!=NULL)
  104.         {
  105.             if(b->num==nv)
  106.             {
  107.                 if(k==0)
  108.                 {
  109.                     bo=b;
  110.                     b=b->sgte;
  111.                     free(bo);
  112.                     e=b;
  113.                 }
  114.                 else
  115.                 {
  116.                     aux->sgte=b->sgte;
  117.                     borrar=b;
  118.                     b=b->sgte;
  119.                     free(borrar);
  120.                 }
  121.             }
  122.             else
  123.             {
  124.                 aux=b;
  125.                 b=b->sgte;
  126.             }
  127.             k++;
  128.         }
  129.         if(e==NULL)
  130.         {
  131.             return copia;
  132.         }
  133.         else
  134.         {
  135.             return e;
  136.         }
  137.         return copia;
  138. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement