class List

@author Yeray Expósito García La clase List proporcionar los métodos necesarios para trabajar con una lista doblemente enlazada.

Attributes

head[R]
sz[R]
tail[R]

Public Class Methods

new() click to toggle source

Metodo que permite declarar e inicializar las variables de instancia.

# File lib/practica_6/Lista.rb, line 9
def initialize
   @tail=nil
   @head=nil
   @sz=0
end

Public Instance Methods

each() { |value| ... } click to toggle source

El método each genera elementos sucesivos de la lista doblemente enlazada. Es necesario para poder emplear los diferentes métodos de recorrido que ofrece Enumerable.

# File lib/practica_6/Lista.rb, line 17
 def each
    var=@head
    for num in (0..@sz-1)
   yield var.value
   var=var.next
end
 end
extract_head!() click to toggle source

El método extract_head! se encarga de extraer el nodo que actualmente está en el head de la lista doblemente enlazada.

@return extraer Variable que contiene el nodo que ha sido extraído del head de la lista.

# File lib/practica_6/Lista.rb, line 69
def extract_head!
        extraer=@head
        
        if(sz>0)
       @head= head.next
       
       if head.nil?
          @tail=nil
       else
          @head.prev=nil
       end
          
       extraer.next=nil
       extraer.prev=nil
           @sz= @sz-1
        end
    extraer
end
extract_tail!() click to toggle source

El método extract_tail! se encarga de extraer el nodo que actualmente está en la cola de la lista doblemente enlazada.

@return extraer Variable que contiene el nodo que ha sido extraído de la cola de la lista.

# File lib/practica_6/Lista.rb, line 91
def extract_tail!
        extraer=@tail
        
        if(sz>0)
       @tail= tail.prev
       
       if tail.nil?
          @head=nil
       else
          @tail.next=nil
       end
          
       extraer.next=nil
       extraer.prev=nil
           @sz= @sz-1
        end
    extraer
end
insert_head!(val) click to toggle source

El método insert_head! se encarga de introducir un nodo por el head de la lista doblemente enlazada.

@param val Representa el valor que contendrá el nodo a insertar en el head de la lista doblemente enlazada. @return @sz Variable de instancia que indica el tamaño actual de la lista tras la inserción.

# File lib/practica_6/Lista.rb, line 54
def insert_head!(val)
        if(@sz==0)
           @head=Node.new(val,nil,nil)
           @tail= head
           @sz= @sz+1
        else
           @head.prev=Node.new(val,head,nil)
           @head= head.prev
           @sz= @sz+1
    end
end
insert_string!(val_string) click to toggle source

El método insert_string! se encarga de introducir (a través del head) una cadena de elementos en la lista doblemente enlazada.

@param val_string Representa el vector que contiene la cadena de elementos a insertar

# File lib/practica_6/Lista.rb, line 28
    def insert_string!(val_string)
       for num in (0..val_string.length-1)
      insert_head!(val_string[num])
   end
end
insert_tail!(val) click to toggle source

El método insert_tail! se encarga de introducir un nodo por la cola de la lista doblemente enlazada.

@param val Representa el valor que contendrá el nodo a insertar en la cola de la lista doblemente enlazada. @return @sz Variable de instancia que indica el tamaño actual de la lista tras la inserción.

# File lib/practica_6/Lista.rb, line 38
def insert_tail!(val)
        if(@sz==0)
           @tail=Node.new(val,nil,nil)
           @head= tail
           @sz= @sz+1
        else
           @tail.next=Node.new(val,nil,tail)
           @tail= tail.next
           @sz= @sz+1
    end
end
to_s() click to toggle source

El método to_s se encarga de formatear la salida cuando intentamos visualizar un objeto

@return [string] En el que se representan las variables de instancia del objeto.

# File lib/practica_6/Lista.rb, line 113
def to_s
        if(sz>0)
           "(size=#{sz} ==> head=#{head.value} tail=#{tail.value})"
        else
       "La lista está vacía."
    end
end