2bam

Untitled

Sep 19th, 2016
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.15 KB | None | 0 0
  1.     //Quita el NODO indicado (Fijese que esta funcion esta sobrecargada: Hay dos con el mismo nombre pero distintos parametros)
  2.     public void Remove(FwdListNode node) {
  3.         //Como se puede ver, esto es lento ya que hay que buscar EL ANTERIOR en la lista para poder sacarlo.
  4.  
  5.         Assert.IsTrue(IsOurNode(node));     //Precondicion: Vemos si es nuestro
  6.  
  7.         //Si es el primero, actualizamos head también
  8.         if(node == _head) {
  9.             _head = _head.next;
  10.  
  11.             //Si lo vaciamos, actualizar tail
  12.             if(_head == null)
  13.                 _tail = null;
  14.         }
  15.         else {
  16.             foreach(var iter in GetNodeEnumerator()) {
  17.                 if(iter.next == node) {     //Lo encontramos
  18.                     RemoveAfter(iter);  //Lo sacamos
  19.                     break;              //No hace falta seguir buscando
  20.                 }
  21.             }
  22.         }
  23.     }
  24.  
  25.     //Quita el NODO siguiente al indicado
  26.     public void RemoveAfter(FwdListNode node) {
  27.         //Este método es más veloz ya que sacar el nodo "siguiente" es super rápido
  28.        
  29.         Assert.IsTrue(IsOurNode(node));     //Precondicion: Vemos si es nuestro
  30.  
  31.         if(node.next != null) {
  32.             node.next = node.next.next;
  33.  
  34.             //Si en el que estamos parados se volvio el ultimo, actualizamos _tail
  35.             if(node.next == null)
  36.                 _tail = node;
  37.         }
  38.     }
Advertisement
Add Comment
Please, Sign In to add comment