Class: DlinkedList

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/DlinkedList.rb

Overview

Clase DlinkedList almacena los datos en una lista

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeDlinkedList

Returns a new instance of DlinkedList.



17
18
19
20
21
# File 'lib/DlinkedList.rb', line 17

def initialize()
    
    @head = @tail = nil
    
end

Instance Attribute Details

#headObject (readonly)

Returns the value of attribute head.



15
16
17
# File 'lib/DlinkedList.rb', line 15

def head
  @head
end

#tailObject (readonly)

Returns the value of attribute tail.



15
16
17
# File 'lib/DlinkedList.rb', line 15

def tail
  @tail
end

Instance Method Details

#eachObject

Recorre la lista desde la cabeza hasta a cola

Parameters:

No recibe nada

Returns:

No retorna nada



163
164
165
166
167
168
169
170
171
172
173
# File 'lib/DlinkedList.rb', line 163

def each
   
    nodo = @head
    while nodo != nil
   
        yield nodo.value
        nodo = nodo.next
        
    end
    
end

#insertHead(value) ⇒ Object

Inserta por la cabeza de la lista un nodo

Parameters:

Recive un valor o dato que se quiera insertar

Returns:

No retorna nada



56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/DlinkedList.rb', line 56

def insertHead(value)
    
    n = Node.new(value)
    
    if @head.nil?
        
        @head = n
        @tail = @head
        
    else
        
        @head.next = n
        n.prev = @head
        @head = n
        
    end
    
end

#insertTail(value) ⇒ Object

Inserta por la cola de la lista un nodo

Parameters:

Recive un valor o dato que se quiera insertar

Returns:

No retorna nada



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/DlinkedList.rb', line 30

def insertTail(value)
    
    n = Node.new(value)
    
    if @head.nil?
        
        @tail = n
        @head = @tail
        
    else
        
        @tail.next = n
        n.prev = @tail
        @tail = n
        
    end
    
end

#ordenarEachObject



210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
# File 'lib/DlinkedList.rb', line 210

def ordenarEach  
arrayOrd = []
    each do |nodo|
        if arrayOrd.empty?
            arrayOrd.push(nodo)
        else
            indice = 0
            while indice < arrayOrd.length
                if nodo <= arrayOrd[indice]
                    arrayOrd.insert(indice, nodo)
                    break
                elsif indice == arrayOrd.length-1
                    arrayOrd.insert(indice+1, nodo)
                    break
                end
                indice+=1
            end
        end
    end
    return arrayOrd
end

#ordenarForObject



188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
# File 'lib/DlinkedList.rb', line 188

def ordenarFor
arrayOrd = []
    for nodo in self
        if arrayOrd.empty?
            arrayOrd.push(nodo)
        else
            indice = 0
            while indice < arrayOrd.length
                if nodo <= arrayOrd[indice]
                    arrayOrd.insert(indice, nodo)
                    break
                elsif indice == arrayOrd.length-1
                    arrayOrd.insert(indice+1, nodo)
                    break
                end
                indice+=1
            end
        end
    end
    return arrayOrd
end

#popHeadObject

Extrae por la cabeza de la lista un nodo

Parameters:

No recibe nada

Returns:

Retorna el nodo extraido



82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'lib/DlinkedList.rb', line 82

def popHead
    
    unless @head.nil?
        
        aux = @head
        unless @head.next.nil?
        
            @head.next.prev = nil
            @head = @head.next
            
        else
            
            @head = nil
            @tail = nil
            
        end
        aux
        
    end
    
end

#popTailObject

Extrae por la cola de la lista un nodo

Parameters:

No recibe nada

Returns:

Retorna el nodo extraido



111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# File 'lib/DlinkedList.rb', line 111

def popTail
    
    unless @tail.nil?
        
        aux = @tail
        unless @tail.prev.nil?
        
            @tail.prev.next = nil
            @tail = @tail.prev
            
        else
            
            @head = nil
            @tail = nil
            
        end
        aux
        
    end
    
end

#removeAllObject

Extrae por la cabeza de la lista todos los nodos que quedan en la lista si no esta vacia

Parameters:

No recibe nada

Returns:

Retorna los nodos extraidos



140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
# File 'lib/DlinkedList.rb', line 140

def removeAll
    
    unless @head.nil?
    
        while @head != nil
            
            aux = @head.next
            self.popHead
            @head = aux
            aux
        end
    
    end
    
end

#to_sObject

Define el metodo para imprimir por pantalla

Parameters:

No recibe ninguno

Returns:

Un string con el contenido de las variables



182
183
184
185
186
# File 'lib/DlinkedList.rb', line 182

def to_s
    
   each {|x| puts x}
   
end