Class: List
Overview
La clase List proporcionar los métodos necesarios para trabajar con una lista doblemente enlazada.
Instance Attribute Summary collapse
-
#head ⇒ Object
readonly
Returns the value of attribute head.
-
#sz ⇒ Object
readonly
Returns the value of attribute sz.
-
#tail ⇒ Object
readonly
Returns the value of attribute tail.
Instance Method Summary collapse
-
#each ⇒ Object
El método each genera elementos sucesivos de la lista doblemente enlazada.
-
#extract_head! ⇒ Object
El método extract_head! se encarga de extraer el nodo que actualmente está en el head de la lista doblemente enlazada.
-
#extract_tail! ⇒ Object
El método extract_tail! se encarga de extraer el nodo que actualmente está en la cola de la lista doblemente enlazada.
-
#initialize ⇒ List
constructor
Metodo que permite declarar e inicializar las variables de instancia.
-
#insert_head!(val) ⇒ Object
El método insert_head! se encarga de introducir un nodo por el head de la lista doblemente enlazada.
-
#insert_string!(val_string) ⇒ Object
El método insert_string! se encarga de introducir (a través del head) una cadena de elementos en la lista doblemente enlazada.
-
#insert_tail!(val) ⇒ Object
El método insert_tail! se encarga de introducir un nodo por la cola de la lista doblemente enlazada.
-
#to_s ⇒ string
El método to_s se encarga de formatear la salida cuando intentamos visualizar un objeto.
Constructor Details
#initialize ⇒ List
Metodo que permite declarar e inicializar las variables de instancia.
9 10 11 12 13 |
# File 'Lista.rb', line 9 def initialize @tail=nil @head=nil @sz=0 end |
Instance Attribute Details
#head ⇒ Object (readonly)
Returns the value of attribute head
6 7 8 |
# File 'Lista.rb', line 6 def head @head end |
#sz ⇒ Object (readonly)
Returns the value of attribute sz
6 7 8 |
# File 'Lista.rb', line 6 def sz @sz end |
#tail ⇒ Object (readonly)
Returns the value of attribute tail
6 7 8 |
# File 'Lista.rb', line 6 def tail @tail end |
Instance Method Details
#each ⇒ Object
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.
17 18 19 20 21 22 23 |
# File 'Lista.rb', line 17 def each var=@head for num in (0..@sz-1) yield var.value var=var.next end end |
#extract_head! ⇒ Object
El método extract_head! se encarga de extraer el nodo que actualmente está en el head de la lista doblemente enlazada.
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File '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! ⇒ Object
El método extract_tail! se encarga de extraer el nodo que actualmente está en la cola de la lista doblemente enlazada.
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
# File '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) ⇒ Object
El método insert_head! se encarga de introducir un nodo por el head de la lista doblemente enlazada.
54 55 56 57 58 59 60 61 62 63 64 |
# File '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) ⇒ Object
El método insert_string! se encarga de introducir (a través del head) una cadena de elementos en la lista doblemente enlazada.
28 29 30 31 32 |
# File '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) ⇒ Object
El método insert_tail! se encarga de introducir un nodo por la cola de la lista doblemente enlazada.
38 39 40 41 42 43 44 45 46 47 48 |
# File '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 ⇒ string
El método to_s se encarga de formatear la salida cuando intentamos visualizar un objeto
113 114 115 116 117 118 119 |
# File '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 |