Class: Lista

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

Overview

Esta clase representa una lista a la que se le pasa un nodo que contenga lo que se desee

Author:

  • Omar Pérez Znakar

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(first, last) ⇒ Lista

Returns a new instance of Lista.



13
14
15
16
# File 'lib/alimentos/lista.rb', line 13

def initialize(first, last)
   	@first = first
   	@last = last
end

Instance Attribute Details

#firstObject (readonly)

Returns the value of attribute first.



11
12
13
# File 'lib/alimentos/lista.rb', line 11

def first
  @first
end

#lastObject (readonly)

Returns the value of attribute last.



11
12
13
# File 'lib/alimentos/lista.rb', line 11

def last
  @last
end

Instance Method Details

#eachObject

Esta función realiza un yield de cada elemento de la lista



45
46
47
48
49
50
51
# File 'lib/alimentos/lista.rb', line 45

def each
	node = @first
	while node != nil do
	    yield node.value
	    node = node.next
	end	
end

#insertEnd(*args) ⇒ Object

Esta función consiste en la incorporación de varios nodos en la lista



19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/alimentos/lista.rb', line 19

def insertEnd *args
	args.each do |arg_item|
    		node = Node.new(arg_item, nil, nil)
    		if @last == nil
        		@last = @first = node
    		else
        		@last.next = node
        		node.prev = @last
        		@last = node
    		end
	end
end

#ordenacion_eachObject

Esta función realiza una ordenación haciendo uso del bucle each



74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/alimentos/lista.rb', line 74

def ordenacion_each
	@resultado = self.map { |x| x }
	indice=0
       @resultado.each do |x|
           var = x
		i = indice
		indice2=indice + 1
		
           @resultado[indice2..@resultado.length-1].each do |y|
               if var > y 
                   var = y
                   i = indice2
               end
               indice2+=1
           end
           
           @resultado[i] = x
           @resultado[indice] = var
           
           indice+=1
       end
       @resultado
end

#ordenacion_forObject

Esta función realiza una ordenación haciendo uso del bucle for



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/alimentos/lista.rb', line 54

def ordenacion_for
	@resultado = self.map { |x| x }
       for x in 0..self.count-1
           var = @resultado[x]
		i = x

           for y in x + 1..self.count-1
               if var > @resultado[y] 
                   var = @resultado[y]
                   i = y
               end
           end
           
           @resultado[i] = @resultado[x]
           @resultado[x] = var
       end
       @resultado
end

#pop_firstObject

Esta función consiste en la extracción del primer elemento de la lista



33
34
35
36
# File 'lib/alimentos/lista.rb', line 33

def pop_first
   	@first = @first.next
   	@first.prev = nil
end

#pop_lastObject

Esta función consiste en la extracción del último elemento de la lista



39
40
41
42
# File 'lib/alimentos/lista.rb', line 39

def pop_last
   	@last = @last.prev
   	@last.next = nil
end