Class: List

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

Overview

Clase Lista para guardar alimentos

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeList

Este metodo crea una lista vacía



21
22
23
24
25
26
27
28
# File 'lib/pract6/List.rb', line 21

def initialize
  @head = Node.new()
  @head = nil
  @tail = Node.new()
  @tail.next = 0
  @tail = nil

end

Instance Attribute Details

#headObject

Returns the value of attribute head.



18
19
20
# File 'lib/pract6/List.rb', line 18

def head
  @head
end

#tailObject

Returns the value of attribute tail.



18
19
20
# File 'lib/pract6/List.rb', line 18

def tail
  @tail
end

Instance Method Details

#eachObject

Este método es utilizado para poder usar el módulo Enumerable en la clase lista



83
84
85
86
87
88
89
# File 'lib/pract6/List.rb', line 83

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

#extract_headObject

Este método extrae el primer nodo de la lista



55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/pract6/List.rb', line 55

def extract_head
    nodo = Node.new()
    if @head != @tail
    nodo = @head
    @head = @head.next
    @head.prev = nil
  else
    nodo = @head
    @head = @head.next
  end
    return nodo.value
end

#extract_tailObject

Este método extrae el último nodo de la lista



69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/pract6/List.rb', line 69

def extract_tail
  nodo = Node.new()
  if @tail != @head
    nodo = @tail
    @tail = @tail.prev
  else
    nodo = @tail
    @head = nil
    @tail = @head
  end
  return nodo.value
end

#insert(nodo) ⇒ Object

Este método permite meter nodos en la lista



39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/pract6/List.rb', line 39

def insert(nodo)
    if @head == nil
      @head = nodo
      @tail = @head
    elsif @head == @tail
      @tail.prev = nodo
      nodo.next = @tail
      @head = nodo
    else
      @head.prev = nodo
      nodo.next = @head
      @head = nodo
    end
end

#ordenar_each(lista_ordenada) ⇒ Object



119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# File 'lib/pract6/List.rb', line 119

def ordenar_each(lista_ordenada)
  self.each do |i|
    min = self.max
    self.each do |j|
        if(lista_ordenada.head == nil)
          nodo = Node.new()
          nodo.value=self.min
          lista_ordenada.insert(nodo)
        else
          if(min >= j && j > lista_ordenada.head.value)
            min = j
        end
      end
    end
    nodo = Node.new()
    nodo.value = min
    lista_ordenada.insert(nodo)

  end
  lista_ordenada.extract_head
  return lista_ordenada
end

#ordenar_for(lista_ordenada) ⇒ Object



92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# File 'lib/pract6/List.rb', line 92

def ordenar_for(lista_ordenada)
  for i in (self)
    min = self.max
    for j in (self)
        if(lista_ordenada.head == nil)
          nodo = Node.new()
          nodo.value=self.min
          lista_ordenada.insert(nodo)
        else
          if(min >= j && j > lista_ordenada.head.value)
            min = j
        end
      end
    end
    nodo = Node.new()
    nodo.value = min
    lista_ordenada.insert(nodo)

  end
  lista_ordenada.extract_head
  return lista_ordenada
end

#sizeObject



30
31
32
33
34
35
36
# File 'lib/pract6/List.rb', line 30

def size
  aux = 0
  self.each do |i|
  aux +=1
  end
  return aux
end