Class: Alimento::List

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(value) ⇒ List

Note:

Constructor de la clase

Returns a new instance of List

Parameters:

  • value

    Contenido de un nodo



15
16
17
18
# File 'lib/alimento/list.rb', line 15

def initialize (value)
	@head = Node.new(value, nil, nil) 
	@tail = @head
end

Instance Attribute Details

#headObject (readonly)

Returns the value of attribute head



11
12
13
# File 'lib/alimento/list.rb', line 11

def head
  @head
end

#tailObject (readonly)

Returns the value of attribute tail



11
12
13
# File 'lib/alimento/list.rb', line 11

def tail
  @tail
end

Instance Method Details

#eachObject

Note:

Recorrer la lista



22
23
24
25
26
27
28
29
# File 'lib/alimento/list.rb', line 22

def each
	return nil unless block_given?
	actual = self.tail
	while actual
		yield actual
		actual = actual.next
	end
end

#extract_headNode

Note:

Extraer el elemento en la cabeza de la lista

Returns Nodo de la lista extraido

Returns:

  • (Node)

    Nodo de la lista extraido



66
67
68
69
70
71
72
# File 'lib/alimento/list.rb', line 66

def extract_head
	actual_head = @head
	new_head = actual_head.prev
	actual_head.prev = nil
	new_head.next = nil
	return new_head
end

#extract_tailNode

Note:

Extraer elemento en la cabeza de la lista

Returns Nodo de la lista extraido

Returns:

  • (Node)

    Nodo de la lista extraido



77
78
79
80
81
82
83
# File 'lib/alimento/list.rb', line 77

def extract_tail
	actual_tail = @tail
	new_tail = actual_tail.next
	actual_tail.next = nil
	new_tail.prev = nil
	return new_tail
end

#insert_head(value) ⇒ Object

Note:

Insertar elemento en la cabeza de la lista

Parameters:

  • value

    Contenido del nodo a insertar



34
35
36
37
38
39
# File 'lib/alimento/list.rb', line 34

def insert_head(value)
	actual_head = @head
	new_head = Node.new(value, nil,actual_head)
	actual_head.next = new_head
	@head = new_head
end

#insert_sundry(value_array) ⇒ Object

Note:

Insertar varios elementos en la lista

Parameters:

  • value_array

    Vector de elementos a insertar en la lista



54
55
56
57
58
59
60
# File 'lib/alimento/list.rb', line 54

def insert_sundry(value_array)
	i = 0
	while i < value_array.length do
		insert_head(value_array[i])
		i += 1
	end
end

#insert_tail(value) ⇒ Object

Note:

Insertar elemento por la cola de la lista

Parameters:

  • value

    Contenido del nodo a insertar



44
45
46
47
48
49
# File 'lib/alimento/list.rb', line 44

def insert_tail(value)
	actual_tail = @tail
	new_tail = Node.new(value, actual_tail, nil)
	actual_tail.prev = new_tail
	@tail = new_tail
end