Advertisement
isaac_mc

X10002 | Esborrat de totes les aparicions d'un element a...

Jun 18th, 2018
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.42 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* i = primer_node;
  9.     while (i != NULL) {
  10.         if (x == i->info) {
  11.             node_llista* aux = i;
  12.             if (primer_node == i){
  13.                 if (i == act) act = act->seg;
  14.                 primer_node = primer_node->seg;
  15.                 if (primer_node != NULL) primer_node->ant = NULL;
  16.                 else {
  17.                     ultim_node = NULL;
  18.                 }
  19.                 i = primer_node;
  20.             } else if (ultim_node == i){
  21.                 if (i == act) act = act->seg;
  22.                 ultim_node = ultim_node->ant;
  23.                 ultim_node->seg = NULL;
  24.                 i = NULL;
  25.             } else {
  26.                 if (i == act) act = act->seg;
  27.                 (i->ant)->seg = i->seg;
  28.                 (i->seg)->ant = i->ant;
  29.                 node_llista* aux = i->seg;
  30.                 i = aux;
  31.             }
  32.             delete aux;
  33.             --longitud;
  34.         } else i = i->seg;
  35.     }
  36. }
  37. //Isaac_mc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement