Advertisement
Guest User

Untitled

a guest
Feb 16th, 2020
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 29.02 KB | None | 0 0
  1. #include <iostream.h>
  2. #include <conio.h>
  3. #include <fstream.h>
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6.  
  7. struct nodo{
  8.    char placa[20],marca[20],tipo[20],color[20];
  9.     nodo *sig;
  10. };
  11.  
  12. //LISTAS ENLAZADAS_crear
  13. nodo *crear_i(nodo *p);
  14. nodo *crear_f(nodo *p);
  15. //LISTAS ENLAZADAS_insertar
  16. nodo *inserta_i(nodo *p);
  17. nodo *inserta_f(nodo *p);
  18. nodo *inserta_ad(nodo *p);
  19. void inserta_dd(nodo *p);
  20. //LISTAS ENLAZADAS_eliminar
  21. nodo *elimina_i(nodo *p);
  22. nodo *elimina_f(nodo *p);
  23. nodo *elimina_x(nodo *p);
  24. nodo *elimina_ad(nodo *p);
  25. void elimina_dd(nodo *p);
  26. //EXTRAS
  27. int eliminar_rep(nodo *p,char *dato);
  28. void modificar(nodo *p);
  29. nodo *ordenar(nodo *p);
  30. void buscar(nodo *p);
  31. void recorre(nodo *p);
  32. //ARCHIVOS
  33. nodo *recargar(nodo *p);
  34. void soltar(nodo *p);
  35. //nodo *revierte(nodo *p);
  36.  
  37. void main(void)
  38. {
  39.    nodo *p = NULL,*q,*r;
  40.    int crea = 0;
  41.    p = recargar(p);
  42.    //ELIMINAR...
  43.    if(p != NULL)
  44.    {
  45.     q = p;
  46.       while(q->sig != NULL)
  47.       {
  48.          r = q;
  49.         q = q->sig;
  50.       }
  51.       r->sig = NULL;
  52.       delete(q);
  53.       crea = 1;
  54.    }
  55.    //
  56.    char op,opt;
  57.    do
  58.    {
  59.     clrscr();
  60.       gotoxy(16,5);cout<<"LISTAS ENLAZADAS - ARCHIVOS";
  61.       gotoxy(16,6);cout<<"===========================";
  62.       gotoxy(17,8);cout<<"1. CREAR...";
  63.       gotoxy(17,10);cout<<"2. INSERTAR...";
  64.       gotoxy(17,12);cout<<"3. ELIMINAR...";
  65.       gotoxy(17,14);cout<<"4. MODIFICAR...";
  66.       gotoxy(17,16);cout<<"5. ORDENAR...";
  67.       gotoxy(17,18);cout<<"6. BUSCAR...";
  68.       gotoxy(17,20);cout<<"7. VISUALIZAR...";
  69.       gotoxy(17,22);cout<<"0. SALIR";
  70.       gotoxy(20,25);cout<<"OPCION : ";cin>>op;
  71.       switch(op)
  72.       {
  73.          case '1':
  74.             do
  75.             {
  76.                 clrscr();
  77.                gotoxy(16,5);cout<<"C R E A C I O N";
  78.                gotoxy(16,6);cout<<"===============";
  79.                gotoxy(17,8);cout<<"1. POR EL INICIO";
  80.                gotoxy(17,10);cout<<"2. POR EL FINAL";
  81.                gotoxy(17,12);cout<<"3. VISUALIZAR";
  82.                gotoxy(17,14);cout<<"0. SALIR";
  83.                gotoxy(20,25);cout<<"OPCION : ";cin>>opt;
  84.                switch(opt)
  85.                {
  86.                 case '1':
  87.                      clrscr();
  88.                      if(p != NULL)
  89.                      {
  90.                         gotoxy(20,10);cout<<"BORRARAS TODOS LOS DATOS, DESEA SEGUIR?(1:SI|2:NO): ";cin>>opt;
  91.                         if(opt == '1')
  92.                         {
  93.                             crea = 0;
  94.                         }
  95.                      }
  96.                      if(crea == 0)
  97.                      {
  98.                         p = crear_i(p);
  99.                         crea = 1;
  100.                      }
  101.                     break;
  102.                   case '2':
  103.                     clrscr();
  104.                      if(p != NULL)
  105.                      {
  106.                         gotoxy(20,10);cout<<"BORRARAS TODOS LOS DATOS, DESEA SEGUIR?(1:SI|2:NO): ";cin>>opt;
  107.                         if(opt == '1')
  108.                         {
  109.                             crea = 0;
  110.                         }
  111.                      }
  112.                      if(crea == 0)
  113.                      {
  114.                         p = crear_f(p);
  115.                         crea = 1;
  116.                      }
  117.                      break;
  118.                   case '3':
  119.                     recorre(p);
  120.                     break;
  121.                   case '0':
  122.                     break;
  123.                   default:
  124.                     opt = '0';
  125.                }
  126.             }while(opt != '0');
  127.             break;
  128.         case '2':
  129.             do
  130.             {
  131.                clrscr();
  132.                 gotoxy(16,5);cout<<"I N S E R T A R";
  133.                gotoxy(16,6);cout<<"===============";
  134.                gotoxy(17,8);cout<<"1. POR EL INICIO";
  135.                gotoxy(17,10);cout<<"2. POR EL FINAL";
  136.                gotoxy(17,12);cout<<"3. ANTES DE X";
  137.                gotoxy(17,14);cout<<"4. DESPUES DE X";
  138.                gotoxy(17,16);cout<<"5. VISUALIZAR";
  139.                gotoxy(17,18);cout<<"0. SALIR";
  140.                gotoxy(20,25);cout<<"OPCION :  ";cin>>opt;
  141.                switch(opt)
  142.                {
  143.                     case '1':
  144.                         p = inserta_i(p);
  145.                      crea = 1;
  146.                      break;
  147.                     case '2':
  148.                     p = inserta_f(p);
  149.                      crea = 1;
  150.                      break;
  151.                   case '3':
  152.                      p = inserta_ad(p);
  153.                     break;
  154.                   case '4':
  155.                      inserta_dd(p);
  156.                     break;
  157.                   case '5':
  158.                     recorre(p);
  159.                      break;
  160.                   case '0':
  161.                     break;
  162.                   default:
  163.                     opt = '0';
  164.                 }
  165.             }while(opt != '0');
  166.             break;
  167.          case '3':
  168.             do
  169.             {
  170.                 clrscr();
  171.                gotoxy(16,5);cout<<"E L I M I N A R";
  172.                gotoxy(16,6);cout<<"===============";
  173.                gotoxy(17,8);cout<<"1. POR EL INICIO";
  174.                gotoxy(17,10);cout<<"2. POR EL FINAL";
  175.                gotoxy(17,12);cout<<"3. DATO ESPECIFICO";
  176.                gotoxy(17,14);cout<<"4. ANTES DE X";
  177.                gotoxy(17,16);cout<<"5. DESPUES DE X";
  178.                gotoxy(17,18);cout<<"6. VISUALIZAR";
  179.                gotoxy(17,20);cout<<"0. SALIR";
  180.                gotoxy(20,25);cout<<"OPCION :  ";cin>>opt;
  181.                switch(opt)
  182.                {
  183.                   case '1':
  184.                     p = elimina_i(p);
  185.                      if(p == NULL)
  186.                      {
  187.                         crea = 0;
  188.                      }
  189.                      break;
  190.                   case '2':
  191.                     p = elimina_f(p);
  192.                      if(p == NULL)
  193.                      {
  194.                         crea = 0;
  195.                      }
  196.                      getch();
  197.                      break;
  198.                   case '3':
  199.                     p = elimina_x(p);
  200.                      if(p == NULL)
  201.                      {
  202.                         crea = 0;
  203.                      }
  204.                      break;
  205.                   case '4':
  206.                     p = elimina_ad(p);
  207.                      break;
  208.                   case '5':
  209.                     elimina_dd(p);
  210.                     break;
  211.                   case '6':
  212.                     recorre(p);
  213.                     break;
  214.                 case '0':
  215.                     break;
  216.                   default:
  217.                     opt = '0';
  218.                }
  219.             }while(opt != '0');
  220.             break;
  221.          case '4':
  222.             modificar(p);
  223.             break;
  224.          case '5':
  225.             p = ordenar(p);
  226.             break;
  227.          case '6':
  228.             buscar(p);
  229.             break;
  230.          case '7':
  231.             recorre(p);
  232.             break;
  233.          case '0':
  234.             break;
  235.          default:
  236.             op = '0';
  237.       }
  238.    }while (op != '0');
  239.    soltar(p);
  240.     getch();
  241. }
  242.  
  243. //LISTAS ENLAZADAS_crear
  244. nodo *crear_i(nodo *p)
  245. {
  246.     clrscr();
  247.    gotoxy(16,5);cout<<"C R E A C I O N   D E   D A T O S (INICIO)";
  248.    gotoxy(16,6);cout<<"==========================================";
  249.     nodo *q;
  250.    p = NULL;
  251.    char dato[8],op;
  252.    int cen,i = 0;
  253.    do
  254.    {
  255.     gotoxy(17,8+i*11);cout<<"INGRESE LOS DATOS";
  256.         gotoxy(18,10+i*11);cout<<"PLACA : ";gets(dato);
  257.     cen = eliminar_rep(p,dato);
  258.     if(cen == 1)
  259.     {
  260.         q = new(nodo);
  261.         strcpy(q->placa,dato);
  262.         gotoxy(18,11+i*11);cout<<"MARCA : ";gets(q->marca);
  263.         gotoxy(18,12+i*11);cout<<"TIPO  : ";gets(q->tipo);
  264.         gotoxy(18,13+i*11);cout<<"COLOR : ";gets(q->color);
  265.         q->sig = p;
  266.         p = q;
  267.         gotoxy(17,15+i*11);cout<<"DATOS INSERTADOS EXITOSAMENTE...";
  268.         }
  269.     else
  270.     {
  271.         gotoxy(17,12+i*11);cout<<"EL NUM. DE PLACA YA ESTA EN USO...";
  272.     }
  273.         gotoxy(17,17+i*11);cout<<"DESEA MAS DATOS?(1:SI|2:NO): ";cin>>op;
  274.       i++;
  275.    }while(op == '1');
  276.    getch();
  277.    return (p);
  278. }
  279.  
  280. nodo *crear_f(nodo *p)
  281. {
  282.    clrscr();
  283.    gotoxy(16,5);cout<<"C R E A C I O N   D E   D A T O S (FINAL)";
  284.    gotoxy(16,6);cout<<"=========================================";
  285.     nodo *q,*r;
  286.    p = NULL;
  287.    int cen,i = 0;
  288.    char dato[8],op;
  289.    do
  290.    {
  291.     gotoxy(17,8+i*11);cout<<"INGRESE LOS DATOS";
  292.         gotoxy(18,10+i*11);cout<<"PLACA : ";gets(dato);
  293.     cen = eliminar_rep(p,dato);
  294.     if(cen == 1)
  295.     {
  296.         q = new(nodo);
  297.         strcpy(q->placa,dato);
  298.         gotoxy(18,11+i*11);cout<<"MARCA : ";gets(q->marca);
  299.         gotoxy(18,12+i*11);cout<<"TIPO  : ";gets(q->tipo);
  300.         gotoxy(18,13+i*11);cout<<"COLOR : ";gets(q->color);
  301.         q->sig = NULL;
  302.         if(p == NULL)
  303.         {
  304.             p = q;
  305.         }
  306.         else
  307.         {
  308.             r->sig = q;
  309.         }
  310.          r = q;
  311.         gotoxy(17,15+i*11);cout<<"DATOS INSERTADOS EXITOSAMENTE...";
  312.     }
  313.     else
  314.     {
  315.         gotoxy(17,12+i*11);cout<<"EL NUM. DE PLACA YA ESTA EN USO...";
  316.     }
  317.       gotoxy(17,17+i*11);cout<<"DESEA MAS DATOS?(1:SI|2:NO): ";cin>>op;
  318.       i++;
  319.    }while(op == '1');
  320.    getch();
  321.    return (p);
  322. }
  323.  
  324. //LISTAS ENLAZADAS_insertar
  325. nodo *inserta_i(nodo *p)
  326. {
  327.    clrscr();
  328.    gotoxy(16,5);cout<<"I N S E R T A R   D A T O S (INICIO)";
  329.    gotoxy(16,6);cout<<"====================================";
  330.     nodo *q;
  331.    char dato[8];
  332.    int cen;
  333.    gotoxy(17,8);cout<<"INGRESE LOS DATOS";
  334.     gotoxy(18,10);cout<<"PLACA : ";gets(dato);
  335.    cen = eliminar_rep(p,dato);
  336.    if(cen == 1)
  337.    {
  338.       q = new(nodo);
  339.       strcpy(q->placa,dato);
  340.     gotoxy(18,11);cout<<"MARCA : ";gets(q->marca);
  341.     gotoxy(18,12);cout<<"TIPO  : ";gets(q->tipo);
  342.     gotoxy(18,13);cout<<"COLOR : ";gets(q->color);
  343.     q->sig = p;
  344.     p = q;
  345.     gotoxy(17,15);cout<<"DATOS INSERTADOS EXITOSAMENTE...";
  346.    }
  347.    else
  348.    {
  349.     gotoxy(17,12);cout<<"EL NUM. DE PLACA YA ESTA EN USO...";
  350.    }
  351.    getch();
  352.    return (p);
  353. }
  354.  
  355. nodo *inserta_f(nodo *p)
  356. {
  357.     clrscr();
  358.    gotoxy(16,5);cout<<"I N S E R T A R   D A T O S (FINAL)";
  359.    gotoxy(16,6);cout<<"====================================";
  360.     nodo *q,*r;
  361.    int cen;
  362.    char dato[8];
  363.    gotoxy(17,8);cout<<"INGRESE LOS DATOS";
  364.     gotoxy(18,10);cout<<"PLACA : ";gets(dato);
  365.    cen = eliminar_rep(p,dato);
  366.    if(cen == 1)
  367.    {
  368.       q = new(nodo);
  369.       strcpy(q->placa,dato);
  370.     gotoxy(18,11);cout<<"MARCA : ";gets(q->marca);
  371.     gotoxy(18,12);cout<<"TIPO  : ";gets(q->tipo);
  372.     gotoxy(18,13);cout<<"COLOR : ";gets(q->color);
  373.     q->sig = NULL;
  374.     if(p == NULL)
  375.     {
  376.         p = q;
  377.     }
  378.     else
  379.     {
  380.         r = p;
  381.         while(r->sig != NULL)
  382.         {
  383.             r = r->sig;
  384.         }
  385.         r->sig = q;
  386.     }
  387.     gotoxy(17,15);cout<<"DATOS INSERTADOS EXITOSAMENTE...";
  388.    }
  389.    else
  390.    {
  391.     gotoxy(17,12);cout<<"EL NUM. DE PLACA YA ESTA EN USO...";
  392.    }
  393.    getch();
  394.    return (p);
  395. }
  396.  
  397. nodo *inserta_ad(nodo *p)
  398. {
  399.    clrscr();
  400.    gotoxy(16,5);cout<<"I N S E R T A R (ANTES DE)";
  401.    gotoxy(16,6);cout<<"==========================";
  402.    if(p != NULL)
  403.     {
  404.     nodo *q,*s,*r;
  405.       int cen = 0;
  406.       char dato[8];
  407.       r = p;
  408.       gotoxy(17,8);cout<<"INGRESE NUM DE PLACA REFERENCIAL: ";gets(dato);
  409.     while(strcmp(r->placa,dato) != 0 && cen == 0)
  410.       {
  411.         if(r->sig != NULL)
  412.          {
  413.             s = r;
  414.             r = r->sig;
  415.          }
  416.          else
  417.          {
  418.             cen = 1;
  419.          }
  420.       }
  421.       if(cen == 0)
  422.       {
  423.          gotoxy(17,10);cout<<"INGRESE LOS DATOS";
  424.          gotoxy(18,12);cout<<"PLACA : ";gets(dato);
  425.         cen = eliminar_rep(p,dato);
  426.         if(cen == 1)
  427.         {
  428.             q = new(nodo);
  429.             strcpy(q->placa,dato);
  430.             gotoxy(18,13);cout<<"MARCA : ";gets(q->marca);
  431.             gotoxy(18,14);cout<<"TIPO  : ";gets(q->tipo);
  432.             gotoxy(18,15);cout<<"COLOR : ";gets(q->color);
  433.             q->sig = r;
  434.             if(r == p)
  435.             {
  436.                 p = q;
  437.             }
  438.                 else
  439.             {
  440.                 s->sig = q;
  441.             }
  442.             gotoxy(17,17);cout<<"DATOS INSERTADOS EXITOSAMENTE...";
  443.         }
  444.          else
  445.          {
  446.             gotoxy(17,14);cout<<"EL NUM. DE PLACA YA ESTA EN USO...";
  447.          }
  448.       }
  449.       else
  450.       {
  451.         gotoxy(17,10);cout<<"NO SE ENCONTRO LA PLACA REFERENCIAL...";
  452.       }
  453.    }
  454.    else
  455.    {
  456.     gotoxy(17,8);cout<<"NO HAY DATOS PARA REFERENCIAR...";
  457.    }
  458.    getch();
  459.     return (p);
  460. }
  461.  
  462. void inserta_dd(nodo *p)
  463. {
  464.    clrscr();
  465.    gotoxy(16,5);cout<<"I N S E R T A R (DESPUES DE)";
  466.    gotoxy(16,6);cout<<"============================";
  467.    if(p != NULL)
  468.    {
  469.     nodo *q,*s,*r;
  470.       int cen = 0;
  471.       char dato[8];
  472.       r = p;
  473.       gotoxy(17,8);cout<<"INGRESE NUM DE PLACA REFERENCIAL: ";gets(dato);
  474.     while(strcmp(r->placa,dato) != 0 && cen == 0)
  475.       {
  476.         if(r->sig != NULL)
  477.          {
  478.             r = r->sig;
  479.          }
  480.          else
  481.          {
  482.             cen = 1;
  483.          }
  484.       }
  485.       if(cen == 0)
  486.       {
  487.          gotoxy(17,10);cout<<"INGRESE LOS DATOS";
  488.          gotoxy(18,12);cout<<"PLACA : ";gets(dato);
  489.         cen = eliminar_rep(p,dato);
  490.         if(cen == 1)
  491.         {
  492.             q = new(nodo);
  493.             strcpy(q->placa,dato);
  494.             gotoxy(18,13);cout<<"MARCA : ";gets(q->marca);
  495.             gotoxy(18,14);cout<<"TIPO  : ";gets(q->tipo);
  496.             gotoxy(18,15);cout<<"COLOR : ";gets(q->color);
  497.             q->sig = r->sig;
  498.             r->sig = q;
  499.             gotoxy(17,17);cout<<"DATOS INSERTADOS EXITOSAMENTE...";
  500.         }
  501.          else
  502.          {
  503.             gotoxy(17,14);cout<<"EL NUM. DE PLACA YA ESTA EN USO...";
  504.          }
  505.       }
  506.       else
  507.       {
  508.         gotoxy(17,10);cout<<"NO SE ENCONTRO LA PLACA REFERENCIAL...";
  509.       }
  510.    }
  511.    else
  512.    {
  513.     gotoxy(17,8);cout<<"NO HAY DATOS PARA REFERENCIAR...";
  514.    }
  515.    getch();
  516. }
  517.  
  518. //LISTAS ENLAZADAS_eliminar
  519. nodo *elimina_i(nodo *p)
  520. {
  521.    clrscr();
  522.    gotoxy(16,5);cout<<"E L I M I N A R (INICIO)";
  523.    gotoxy(16,6);cout<<"========================";
  524.     if(p != NULL)
  525.    {
  526.     nodo *q;
  527.       int op;
  528.       q = p;
  529.       gotoxy(17,8);cout<<"MOSTRANDO DATOS";
  530.         gotoxy(18,10);cout<<"PLACA : "<<q->placa;
  531.     gotoxy(18,11);cout<<"MARCA : "<<q->marca;
  532.     gotoxy(18,12);cout<<"TIPO  : "<<q->tipo;
  533.     gotoxy(18,13);cout<<"COLOR : "<<q->color;
  534.       gotoxy(17,15);cout<<"ESTAS SEGURO QUE DESEAS ELIMINAR LOS DATOS?(1:SI|2:NO): ";cin>>op;
  535.       if(op == 1)
  536.       {
  537.          p = p->sig;
  538.          delete (q);
  539.          gotoxy(17,17);cout<<"DATOS ELIMINADOS";
  540.       }
  541.       else
  542.       {
  543.         gotoxy(17,17);cout<<"DATOS NO ELIMINADOS";
  544.       }
  545.    }
  546.    else
  547.    {
  548.     gotoxy(17,8);cout<<"NO HAY DATOS PARA ELIMINAR...";
  549.    }
  550.    getch();
  551.    return (p);
  552. }
  553.  
  554. nodo *elimina_f(nodo *p)
  555. {
  556.     clrscr();
  557.    gotoxy(16,5);cout<<"E L I M I N A R (FINAL)";
  558.    gotoxy(16,6);cout<<"=======================";
  559.     if(p != NULL)
  560.    {
  561.       nodo *q,*r;
  562.       int op;
  563.     q = p;
  564.       while(q->sig != NULL)
  565.       {
  566.          r = q;
  567.         q = q->sig;
  568.       }
  569.       gotoxy(17,8);cout<<"MOSTRANDO DATOS";
  570.         gotoxy(18,10);cout<<"PLACA : "<<q->placa;
  571.     gotoxy(18,11);cout<<"MARCA : "<<q->marca;
  572.     gotoxy(18,12);cout<<"TIPO  : "<<q->tipo;
  573.     gotoxy(18,13);cout<<"COLOR : "<<q->color;
  574.       gotoxy(17,15);cout<<"ESTAS SEGURO QUE DESEAS ELIMINAR LOS DATOS?(1:SI|2:NO): ";cin>>op;
  575.       if(op == 1)
  576.       {
  577.          if(p == q)
  578.          {
  579.             p = p->sig;
  580.          }
  581.          else
  582.          {
  583.             r->sig = NULL;
  584.         }
  585.          delete (q);
  586.         gotoxy(17,17);cout<<"DATOS ELIMINADOS";
  587.       }
  588.       else
  589.       {
  590.         gotoxy(17,17);cout<<"DATOS NO ELIMINADOS";
  591.       }
  592.    }
  593.    else
  594.    {
  595.     gotoxy(17,8);cout<<"NO HAY DATOS PARA ELIMINAR...";
  596.    }
  597.    return (p);
  598. }
  599.  
  600. nodo *elimina_x(nodo *p)
  601. {
  602.     clrscr();
  603.    gotoxy(16,5);cout<<"E L I M I N A R (DATO X)";
  604.    gotoxy(16,6);cout<<"========================";
  605.     if(p != NULL)
  606.    {
  607.     nodo *q,*r;
  608.       int op,cen = 0;
  609.       char dato[8];
  610.       q = p;
  611.       gotoxy(17,8);cout<<"INGRESE NUM. DE PLACA A ELIMINAR: ";gets(dato);
  612.       while(strcmp(q->placa,dato) != 0 && cen == 0)
  613.       {
  614.         if(q->sig != NULL)
  615.          {
  616.             r = q;
  617.             q = q->sig;
  618.          }
  619.          else
  620.          {
  621.             cen = 1;
  622.          }
  623.       }
  624.       if(cen == 0)
  625.       {
  626.         gotoxy(17,10);cout<<"MOSTRANDO DATOS A ELIMINAR";
  627.          gotoxy(18,12);cout<<"PLACA : "<<q->placa;
  628.          gotoxy(18,13);cout<<"MARCA : "<<q->marca;
  629.          gotoxy(18,14);cout<<"TIPO  : "<<q->tipo;
  630.          gotoxy(18,15);cout<<"COLOR : "<<q->color;
  631.          gotoxy(17,17);cout<<"ESTAS SEGURO QUE DESEA ELIMINAR LOS DATOS?(1:SI|2:NO):  ";cin>>op;
  632.          if(op == 1)
  633.          {
  634.             if(q = p)
  635.             {
  636.                p = p->sig;
  637.             }
  638.             else
  639.             {
  640.                 r->sig = q->sig;
  641.             }
  642.             delete (q);
  643.             gotoxy(17,19);cout<<"DATOS ELIMINADOS";
  644.          }
  645.          else
  646.          {
  647.             gotoxy(17,19);cout<<"DATOS NO ELIMINADOS";
  648.          }
  649.       }
  650.       else
  651.       {
  652.         gotoxy(17,10);cout<<"NO SE ENCONTRO LA PLACA REFERENCIAL...";
  653.       }
  654.    }
  655.    else
  656.    {
  657.     gotoxy(17,8);cout<<"NO HAY DATOS PARA ELIMINAR...";
  658.    }
  659.    getch();
  660.    return (p);
  661. }
  662.  
  663. nodo *elimina_ad(nodo *p)
  664. {
  665.     clrscr();
  666.    gotoxy(16,5);cout<<"E L I M I N A R (ANTES DE)";
  667.    gotoxy(16,6);cout<<"========================";
  668.     if(p != NULL)
  669.    {
  670.     nodo *q,*r,*s;
  671.       int op,cen = 0;
  672.       char dato[8];
  673.       q = p;
  674.       r = q;
  675.       gotoxy(17,8);cout<<"INGRESE NUM. DE PLACA REFERENCIAL: ";gets(dato);
  676.       while(strcmp(q->placa,dato) != 0 && cen == 0)
  677.       {
  678.         if(q->sig != NULL)
  679.          {
  680.             s = r;
  681.             r = q;
  682.             q = q->sig;
  683.          }
  684.          else
  685.          {
  686.             cen = 1;
  687.          }
  688.       }
  689.       if(cen == 0)
  690.       {
  691.         if(q == p)
  692.          {
  693.             gotoxy(17,10);cout<<"NO EXISTE UNA PLACA ANTES DEL REFERENCIAL...";
  694.          }
  695.          else
  696.          {
  697.             gotoxy(17,10);cout<<"MOSTRANDO DATOS A ELIMINAR";
  698.             gotoxy(18,12);cout<<"PLACA : "<<r->placa;
  699.             gotoxy(18,13);cout<<"MARCA : "<<r->marca;
  700.             gotoxy(18,14);cout<<"TIPO  : "<<r->tipo;
  701.             gotoxy(18,15);cout<<"COLOR : "<<r->color;
  702.             gotoxy(17,17);cout<<"ESTAS SEGURO QUE DESEA ELIMINAR LOS DATOS?(1:SI|2:NO):  ";cin>>op;
  703.             if(op == 1)
  704.             {
  705.                 if(r == p)
  706.                 {
  707.                     p = p->sig;
  708.                 }
  709.                 else
  710.                 {
  711.                 s->sig = q;
  712.                }
  713.                delete (r);
  714.                gotoxy(17,19);cout<<"DATOS ELIMINADOS";
  715.             }
  716.             else
  717.             {
  718.                 gotoxy(17,19);cout<<"DATOS NO ELIMINADOS";
  719.             }
  720.          }
  721.       }
  722.       else
  723.       {
  724.         gotoxy(17,10);cout<<"NO SE ENCONTRO LA PLACA REFERENCIAL...";
  725.       }
  726.    }
  727.    else
  728.    {
  729.     gotoxy(17,8);cout<<"NO HAY DATOS PARA ELIMINAR...";
  730.    }
  731.    getch();
  732.    return (p);
  733. }
  734.  
  735. void elimina_dd(nodo *p)
  736. {
  737.     clrscr();
  738.    gotoxy(16,5);cout<<"E L I M I N A R (DESPUES DE)";
  739.    gotoxy(16,6);cout<<"========================";
  740.     if(p != NULL)
  741.    {
  742.     nodo *q,*r;
  743.       int op,cen = 0;
  744.       char dato[8];
  745.       q = p;
  746.       gotoxy(17,8);cout<<"INGRESE NUM. DE PLACA A ELIMINAR: ";gets(dato);
  747.       while(strcmp(q->placa,dato) != 0 && cen == 0)
  748.       {
  749.         if(q->sig != NULL)
  750.          {
  751.             q = q->sig;
  752.          }
  753.          else
  754.          {
  755.             cen = 1;
  756.          }
  757.       }
  758.       if(cen == 0)
  759.       {
  760.         if(q->sig == NULL)
  761.          {
  762.             gotoxy(17,10);cout<<"NO EXISTE UNA PLACA DESPUES DEL REFERENCIAL...";
  763.          }
  764.          else
  765.          {
  766.             r = q->sig;
  767.             gotoxy(17,10);cout<<"MOSTRANDO DATOS A ELIMINAR";
  768.             gotoxy(18,12);cout<<"PLACA : "<<r->placa;
  769.             gotoxy(18,13);cout<<"MARCA : "<<r->marca;
  770.             gotoxy(18,14);cout<<"TIPO  : "<<r->tipo;
  771.             gotoxy(18,15);cout<<"COLOR : "<<r->color;
  772.             gotoxy(17,17);cout<<"ESTAS SEGURO QUE DESEA ELIMINAR LOS DATOS?(1:SI|2:NO):  ";cin>>op;
  773.             if(op == 1)
  774.             {
  775.                 q->sig = r->sig;
  776.                delete(r);
  777.  
  778.                gotoxy(17,19);cout<<"DATOS ELIMINADOS";
  779.             }
  780.             else
  781.             {
  782.                 gotoxy(17,19);cout<<"DATOS NO ELIMINADOS";
  783.             }
  784.          }
  785.       }
  786.       else
  787.       {
  788.         gotoxy(17,10);cout<<"NO SE ENCONTRO LA PLACA REFERENCIAL...";
  789.       }
  790.    }
  791.    else
  792.    {
  793.     gotoxy(17,8);cout<<"NO EXISTEN DATOS PARA ELIMINAR...";
  794.    }
  795.    getch();
  796. }
  797.  
  798. //EXTRAS
  799. int eliminar_rep(nodo *p,char *dato)
  800. {
  801.     int cen = 1;
  802.    if(p != NULL)
  803.    {
  804.       cen = 0;
  805.     nodo *q;
  806.     q = p;
  807.     while(strcmp(q->placa,dato) != 0 && cen == 0)
  808.     {
  809.         if(q->sig != NULL)
  810.          {
  811.             q = q->sig;
  812.          }
  813.          else
  814.          {
  815.             cen = 1;
  816.          }
  817.     }
  818.    }
  819.    return cen;
  820. }
  821.  
  822. void modificar(nodo *p)
  823. {
  824.     clrscr();
  825.    gotoxy(16,5);cout<<"M O D I F I C A R   D A T O S";
  826.    gotoxy(16,6);cout<<"=============================";
  827.    if(p != NULL)
  828.    {
  829.       char op,opt,dato[20];
  830.       int cen = 0;
  831.     nodo *q;
  832.       q = p;
  833.       gotoxy(17,8);cout<<"INGRESE EL NUM DE PLACA A MODIFICAR: ";gets(dato);
  834.       while(strcmp(q->placa,dato) != 0 && cen == 0)
  835.       {
  836.         if(q->sig != NULL)
  837.          {
  838.             q = q->sig;
  839.         }
  840.         else
  841.         {
  842.             cen = 1;
  843.         }
  844.     }
  845.       if(cen == 0)
  846.       {
  847.          gotoxy(17,10);cout<<"PLACA ENCONTRADA, MOSTRANDO DATOS";
  848.          gotoxy(18,12);cout<<"PLACA : "<<q->placa;
  849.          gotoxy(18,13);cout<<"MARCA : "<<q->marca;
  850.          gotoxy(18,14);cout<<"TIPO  : "<<q->tipo;
  851.          gotoxy(18,15);cout<<"COLOR : "<<q->color;
  852.          gotoxy(17,17);cout<<"1. MODIFICAR TODO EL REGISTRO";
  853.         gotoxy(17,19);cout<<"2. MODIFICAR UN SOLO DATO";
  854.          gotoxy(17,21);cout<<"3. NO HACER NADA";
  855.          gotoxy(17,23);cout<<"OPCION : ";cin>>op;
  856.          switch(op)
  857.          {
  858.             case '1':
  859.                gotoxy(18,25);cout<<"PLACA MODIFICADA : ";gets(dato);
  860.                cen = eliminar_rep(p,dato);
  861.                if(cen == 1)
  862.                {
  863.                   strcpy(q->placa,dato);
  864.                 gotoxy(18,26);cout<<"MARCA MODIFICADA : ";gets(q->marca);
  865.                 gotoxy(18,27);cout<<"TIPO MODIFICADO  : ";gets(q->tipo);
  866.                 gotoxy(18,28);cout<<"COLOR MODIFICADO : ";gets(q->color);
  867.                }
  868.                else
  869.                {
  870.                 gotoxy(17,27);cout<<"EL NUM. DE PLACA YA ESTA EN USO...";
  871.                }
  872.                 break;
  873.             case '2':
  874.                gotoxy(17,25);cout<<"QUE DESEA MODIFICAR?";
  875.                gotoxy(17,26);cout<<"1.PLACA   2.MARCA   3.TIPO   4.COLOR";
  876.                gotoxy(17,27);cout<<"OPCION : ";cin>>opt;
  877.                switch(opt)
  878.                {
  879.                 case '1':
  880.                      gotoxy(17,29);cout<<"ESTAS SEGURO QUE DESEAS MODIFICAR LA PLACA?(1:SI|2:NO): ";cin>>op;
  881.                      if(op == '1')
  882.                      {
  883.                         gotoxy(18,31);cout<<"PLACA MODIFICADA : ";gets(dato);
  884.                         cen = eliminar_rep(p,dato);
  885.                         if(cen == 1)
  886.                         {
  887.                             strcpy(q->placa,dato);
  888.                         }
  889.                         else
  890.                         {
  891.                             gotoxy(18,33);cout<<"EL NUM. DE PLACA YA ESTA EN USO...";
  892.                         }
  893.                      }
  894.                     break;
  895.                   case '2':
  896.                     gotoxy(18,29);cout<<"MARCA MODIFICADA : ";gets(q->marca);
  897.                     break;
  898.                   case '3':
  899.                     gotoxy(18,29);cout<<"TIPO MODIFICADO  : ";gets(q->tipo);
  900.                     break;
  901.                   case '4':
  902.                     gotoxy(18,29);cout<<"COLOR MODIFICADO : ";gets(q->color);
  903.                     break;
  904.                   default:
  905.                     opt = 0;
  906.                }
  907.                if(opt == 0)
  908.                {
  909.                 gotoxy(17,29);cout<<"ERROR AL MODIFICAR";
  910.                }
  911.                else
  912.                {
  913.                 gotoxy(17,35);cout<<"DESEA VISUALIZAR LOS DATOS?(1:SI|2:NO): ";cin>>opt;
  914.                   if(opt == '1')
  915.                   {
  916.                     gotoxy(18,37);cout<<"PLACA : "<<q->placa;
  917.                         gotoxy(18,38);cout<<"MARCA : "<<q->marca;
  918.                         gotoxy(18,39);cout<<"TIPO  : "<<q->tipo;
  919.                             gotoxy(18,40);cout<<"COLOR : "<<q->color;
  920.                   }
  921.                }
  922.                 break;
  923.             case '3':
  924.                gotoxy(18,25);cout<<"NO SE REALIZO NINGUNA ACCION...";
  925.                 break;
  926.             default:
  927.                 op = '3';
  928.          }
  929.       }
  930.       else
  931.       {
  932.          gotoxy(17,10);cout<<"NO SE ENCONTRO LA PLACA QUE DESEA MODIFICAR...";
  933.       }
  934.    }
  935.    else
  936.    {
  937.     gotoxy(17,8);cout<<"NO HAY ELEMENTOS...";
  938.    }
  939.    getch();
  940. }
  941.  
  942. nodo *ordenar(nodo *p)
  943. {
  944.    /*clrscr();
  945.    gotoxy(16,5);cout<<"O R D E N A R   D A T O S";
  946.    gotoxy(16,6);cout<<"=========================";
  947.    if(p != NULL)
  948.    {
  949.     nodo *q,*r,*aux,*min;
  950.       q = p;
  951.       while(q->sig != NULL)
  952.       {
  953.          min = q;
  954.          r = q->sig;
  955.         while(r != NULL)
  956.         {
  957.             if(strcmp(min->placa,r->placa) < 0)
  958.             {
  959.                 min = r;
  960.             }
  961.             r = r->sig;
  962.          }
  963.          strcpy(aux->placa,q->placa);
  964.          strcpy(q->placa,min->placa);
  965.          strcpy(min->placa,aux->placa);
  966.  
  967.          strcpy(aux->marca,q->marca);
  968.          strcpy(q->marca,min->marca);
  969.          strcpy(min->marca,aux->marca);
  970.  
  971.          strcpy(aux->tipo,q->tipo);
  972.          strcpy(q->tipo,min->tipo);
  973.          strcpy(min->tipo,aux->tipo);
  974.  
  975.          strcpy(aux->color,q->color);
  976.          strcpy(q->color,min->color);
  977.          strcpy(min->color,aux->color);
  978.          q = q->sig;
  979.       }
  980.       gotoxy(17,8);cout<<"DATOS ORDENADOS...";
  981.    }
  982.    else
  983.    {
  984.     gotoxy(17,8);cout<<"NO HAY DATOS PARA ORDENAR...";
  985.    }
  986.    getch();  */
  987.     return (p);
  988. }
  989.  
  990. void buscar(nodo *p)
  991. {
  992.     clrscr();
  993.    gotoxy(16,5);cout<<"B U S C A R   D A T O S";
  994.    gotoxy(16,6);cout<<"=======================";
  995.    if(p != NULL)
  996.    {
  997.       char op,dato[20];
  998.       int cen = 0;
  999.     nodo *q;
  1000.       q = p;
  1001.       gotoxy(17,8);cout<<"INGRESE EL NUM DE PLACA A BUSCAR: ";gets(dato);
  1002.       while(strcmp(q->placa,dato) != 0 && cen == 0)
  1003.       {
  1004.         if(q->sig != NULL)
  1005.          {
  1006.             q = q->sig;
  1007.         }
  1008.         else
  1009.         {
  1010.             cen = 1;
  1011.         }
  1012.     }
  1013.       if(cen == 0)
  1014.       {
  1015.          gotoxy(17,10);cout<<"PLACA ENCONTRADA, MOSTRANDO DATOS";
  1016.          gotoxy(18,12);cout<<"PLACA : "<<q->placa;
  1017.          gotoxy(18,13);cout<<"MARCA : "<<q->marca;
  1018.          gotoxy(18,14);cout<<"TIPO  : "<<q->tipo;
  1019.          gotoxy(18,15);cout<<"COLOR : "<<q->color;
  1020.       }
  1021.       else
  1022.       {
  1023.          gotoxy(17,10);cout<<"NO SE ENCONTRO LA PLACA QUE SE BUSCA...";
  1024.       }
  1025.    }
  1026.    else
  1027.    {
  1028.     gotoxy(17,8);cout<<"NO HAY ELEMENTOS...";
  1029.    }
  1030.    getch();
  1031. }
  1032.  
  1033. void recorre(nodo *p)
  1034. {
  1035.    clrscr();
  1036.    gotoxy(16,5);cout<<"V I S U A L I Z A R   D A T O S";
  1037.    gotoxy(16,6);cout<<"===============================";
  1038.    if(p != NULL)
  1039.    {
  1040.     nodo *q;
  1041.       int i = 1,j = 0;
  1042.     q = p;
  1043.         while(q != NULL)
  1044.     {
  1045.          gotoxy(17,8+j*6);cout<<"VEHICULO N."<<i;
  1046.         gotoxy(18,9+j*6);cout<<"PLACA : "<<q->placa;
  1047.         gotoxy(18,10+j*6);cout<<"MARCA : "<<q->marca;
  1048.         gotoxy(18,11+j*6);cout<<"TIPO  : "<<q->tipo;
  1049.         gotoxy(18,12+j*6);cout<<"COLOR : "<<q->color;
  1050.          gotoxy(17,13+j*6);cout<<"---------------------";
  1051.         q = q->sig;
  1052.          i++;
  1053.          j++;
  1054.     }
  1055.    }
  1056.    else
  1057.    {
  1058.     gotoxy(17,8);cout<<"NO HAY ELEMENTOS...";
  1059.    }
  1060.    getch();
  1061. }
  1062.  
  1063. //ARCHIVOS
  1064. nodo *recargar(nodo *p)
  1065. {
  1066.    nodo *q,*r;
  1067.    char dato[20];
  1068.     //CREANDO ARCHIVO
  1069.    ifstream archivo;
  1070.    //ABRIENDO ARCHIVO
  1071.    archivo.open("prueba.txt",ios::in);
  1072.    if(!archivo.fail())
  1073.    {
  1074.       while(!archivo.eof())
  1075.     {
  1076.         q = new(nodo);
  1077.  
  1078.         archivo.getline(dato,20);
  1079.          strcpy(q->placa,dato);
  1080.  
  1081.         archivo.getline(dato,20);
  1082.          strcpy(q->marca,dato);
  1083.  
  1084.         archivo.getline(dato,20);
  1085.          strcpy(q->tipo,dato);
  1086.  
  1087.         archivo.getline(dato,20);
  1088.          strcpy(q->color,dato);
  1089.  
  1090.         q->sig = NULL;
  1091.         if(p == NULL)
  1092.         {
  1093.             p = q;
  1094.         }
  1095.         else
  1096.         {
  1097.             r->sig = q;
  1098.         }
  1099.         r = q;
  1100.     }
  1101.    }
  1102.    archivo.close();
  1103.    return (p);
  1104. }
  1105.  
  1106. void soltar(nodo *p)
  1107. {
  1108.     if(p != NULL)
  1109.    {
  1110.       //CREANDO ARCHIVO
  1111.       ofstream archivo;
  1112.       //ABRIENDO ARCHIVO
  1113.       archivo.open("prueba.txt",ios::out | ios::trunc);
  1114.       if(archivo.fail())
  1115.       {
  1116.         cout<<"\n\nNO SE PUDO ABRIR EL ARCHIVO...";
  1117.         exit(1);
  1118.     }
  1119.     while(p != NULL)
  1120.     {
  1121.         archivo<<p->placa<<endl;
  1122.          archivo<<p->marca<<endl;
  1123.          archivo<<p->tipo<<endl;
  1124.          archivo<<p->color<<endl;
  1125.         p = p->sig;
  1126.     }
  1127.     archivo.close();
  1128.     cout<<"\n\nDATOS ENVIADOS AL ARCHIVO...";
  1129.    }
  1130.    else
  1131.    {
  1132.     cout<<"\n\nNO HAY DATOS PARA ENVIAR AL ARCHIVO...";
  1133.    }
  1134. }
  1135. /*
  1136. nodo *revierte(nodo *p)
  1137. {
  1138.     if(p != NULL)
  1139.    {
  1140.       nodo *q,*s;
  1141.       s = p;
  1142.       p = NULL;
  1143.       while(s != NULL)
  1144.       {
  1145.         q = s;
  1146.          s = s->sig;
  1147.          q->sig = p;
  1148.          p = q;
  1149.       }
  1150.    }
  1151.    return (p);
  1152. } */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement