Advertisement
rihardmarius

final 2b - diferencia simetrica

Nov 24th, 2013
233
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include "listas_libreria.h"
  3.  
  4. void diferencia_simetrica (lista& a, lista& b, lista& c)
  5. {
  6.     node* p = a.root;
  7.     node* q = b.root;
  8.  
  9.     while (p != 0 and q != 0)
  10.     {
  11.         if (p->entry == q->entry)
  12.         {
  13.             p = p->next;
  14.             q = q->next;
  15.         }
  16.         else if (p->entry < q->entry)
  17.         {
  18.             insertar_nodo_al_final(c,p->entry);
  19.             p = p->next;
  20.         }
  21.         else
  22.         {
  23.             insertar_nodo_al_final(c,q->entry);
  24.             q = q->next;
  25.         }
  26.     }
  27.     if (p == 0)
  28.         while (q != 0)
  29.         {
  30.             insertar_nodo_al_final(c,q->entry);
  31.             q = q->next;
  32.         }
  33.     else
  34.         while (p != 0)
  35.         {
  36.             insertar_nodo_al_final(c,p->entry);
  37.             p = p->next;
  38.         }
  39. }
  40.  
  41. int main()
  42. {
  43.     lista a;
  44.     for (int i = 0; i<10; i++)
  45.         insertar_nodo_al_final(a,i+2);
  46.     mostrar_lista(a);
  47.  
  48.     lista b;
  49.     for (int i = 0; i<10; i++)
  50.         insertar_nodo_al_final(b,i);
  51.     mostrar_lista(b);
  52.  
  53.     lista c;
  54.     diferencia_simetrica (a,b,c);
  55.     cout << endl;
  56.     mostrar_lista(c);
  57.  
  58.     return 0;
  59. }
Advertisement
RAW Paste Data Copied
Advertisement