Class: Lista
- Inherits:
-
Object
- Object
- Lista
- Includes:
- Enumerable
- Defined in:
- lib/alimento/Lista.rb,
lib/alimento/version.rb
Overview
Representación de una lista doblemente enlazada de nodos
Direct Known Subclasses
Constant Summary
- VERSION =
Version de la clase Lista
"1.0.0"
Instance Attribute Summary collapse
- #head ⇒ Object readonly
-
#Node ⇒ Object
readonly
head Nodo en la cabeza de la lista.
- #tail ⇒ Object readonly
Instance Method Summary collapse
-
#each ⇒ Node
Método para la enumeración de los nodos de la lista.
-
#pop_head ⇒ any?
Extracción del primer nodo de la lista.
-
#pop_tail ⇒ any?
Extracción del último nodo de la lista.
-
#push(x) ⇒ Node
Inserción por la cola de la lista de varios nodos.
-
#push_head(x) ⇒ Node
Inserción por la cabeza de la lista.
-
#push_tail(x) ⇒ Node
Inserción por la cola de la lista.
Instance Attribute Details
#head ⇒ Object (readonly)
18 19 20 |
# File 'lib/alimento/Lista.rb', line 18 def head @head end |
#Node ⇒ Object (readonly)
head Nodo en la cabeza de la lista
16 17 18 |
# File 'lib/alimento/Lista.rb', line 16 def Node @Node end |
#tail ⇒ Object (readonly)
18 19 20 |
# File 'lib/alimento/Lista.rb', line 18 def tail @tail end |
Instance Method Details
#each ⇒ Node
Método para la enumeración de los nodos de la lista
103 104 105 106 107 108 109 |
# File 'lib/alimento/Lista.rb', line 103 def each x = @head while(x != nil) yield x.value x = x.next end end |
#pop_head ⇒ any?
Extracción del primer nodo de la lista
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/alimento/Lista.rb', line 65 def pop_head() if(@head == nil) return nil end x = @head @head = @head.next if(@head == nil) @tail = nil else @head.prev = nil x.next = nil end x.value end |
#pop_tail ⇒ any?
Extracción del último nodo de la lista
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
# File 'lib/alimento/Lista.rb', line 84 def pop_tail() if(@tail == nil) return nil end x = @tail @tail = @tail.prev if(@tail == nil) @head = nil else @tail.next = nil x.prev = nil end x.value end |
#push(x) ⇒ Node
Inserción por la cola de la lista de varios nodos
56 57 58 59 60 |
# File 'lib/alimento/Lista.rb', line 56 def push(x) x.each{ |i| push_tail(i) } end |
#push_head(x) ⇒ Node
Inserción por la cabeza de la lista
24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/alimento/Lista.rb', line 24 def push_head(x) if(@head == nil) @head = Node.new(x, nil, nil) @tail = @head else nuevo = Node.new(x, nil, nil) nuevo.next= @head @head.prev = nuevo @head = nuevo end end |
#push_tail(x) ⇒ Node
Inserción por la cola de la lista
40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/alimento/Lista.rb', line 40 def push_tail(x) if(@tail == nil) @tail = Node.new(x, nil, nil) @head = @tail else nuevo = Node.new(x, nil, nil) nuevo.prev = @tail @tail.next = nuevo @tail = nuevo end end |