Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Quita el NODO indicado (Fijese que esta funcion esta sobrecargada: Hay dos con el mismo nombre pero distintos parametros)
- public void Remove(FwdListNode node) {
- //Como se puede ver, esto es lento ya que hay que buscar EL ANTERIOR en la lista para poder sacarlo.
- Assert.IsTrue(IsOurNode(node)); //Precondicion: Vemos si es nuestro
- //Si es el primero, actualizamos head también
- if(node == _head) {
- _head = _head.next;
- //Si lo vaciamos, actualizar tail
- if(_head == null)
- _tail = null;
- }
- else {
- foreach(var iter in GetNodeEnumerator()) {
- if(iter.next == node) { //Lo encontramos
- RemoveAfter(iter); //Lo sacamos
- break; //No hace falta seguir buscando
- }
- }
- }
- }
- //Quita el NODO siguiente al indicado
- public void RemoveAfter(FwdListNode node) {
- //Este método es más veloz ya que sacar el nodo "siguiente" es super rápido
- Assert.IsTrue(IsOurNode(node)); //Precondicion: Vemos si es nuestro
- if(node.next != null) {
- node.next = node.next.next;
- //Si en el que estamos parados se volvio el ultimo, actualizamos _tail
- if(node.next == null)
- _tail = node;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment