Advertisement
JosepRivaille

X10002: Esborrat de totes les aparicions d'un element a un

Jan 10th, 2016
715
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.19 KB | None | 0 0
  1. void esborrar_tots(const T& x) {
  2. /* Pre: parametre implicit = P */
  3. /* Post: s'han eliminat del parametre implicit totes les aparicions d'x (la
  4.     resta d'elements queda en el mateix ordre que a P); si el punt d'interes de P
  5.     referenciava a una aparicio d'x, passa a referenciar al primer element
  6.     diferent d'x posterior a aquesta (si no hi ha cap element diferent d'x, passa
  7.     a la dreta el tot); en cas contrari, el punt d'interes no canvia */
  8.     node_llista *n = primer_node;
  9.     if (longitud == 1) {
  10.         if (n->info == x) {
  11.             primer_node = NULL;
  12.             ultim_node = NULL;
  13.             act = NULL;
  14.             delete n;
  15.             --longitud;
  16.         }
  17.     }
  18.     else {
  19.         while (n != NULL) {
  20.             if (n->info == x) {
  21.                 node_llista *aux = n;
  22.                 if (n == primer_node) {
  23.                     if (n == act) act = act->seg;
  24.                     (n->seg)->ant = NULL;
  25.                     primer_node = n->seg;
  26.                     n = n->seg;
  27.                 }
  28.                 else if (n == ultim_node) {
  29.                     if (n == act) act = NULL;
  30.                     (n->ant)->seg = NULL;
  31.                     ultim_node = n->ant;
  32.                     n = n->seg;
  33.                 }
  34.                 else {
  35.                     if (n == act) act = act->seg;
  36.                     (n->seg)->ant = n->ant;
  37.                     (n->ant)->seg = n->seg;
  38.                     n = n->seg;
  39.                 }
  40.                 delete aux;
  41.                 --longitud;
  42.             }
  43.             else n = n->seg;
  44.         }
  45.     }
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement