class LinkedList
Attributes
head[R]
Public Class Methods
new(value=nil)
click to toggle source
# File lib/bibliogem/LinkedList.rb, line 9 def initialize(value=nil) @head = Node.new(nil, value, nil) end
Public Instance Methods
each() { |current| ... }
click to toggle source
# File lib/bibliogem/LinkedList.rb, line 98 def each current = @head until current == nil yield (current[:value]) current=current[:next] end end
erase(position)
click to toggle source
# File lib/bibliogem/LinkedList.rb, line 54 def erase(position) if position > size return nil end if position == 0 if @head[:next].nil? @head = nil else @head = @head[:next] end else current = @head for i in 0..position-1 current = current[:next] end current = current[:prev] current[:next] = (current[:next])[:next] end end
insert(position, *values)
click to toggle source
# File lib/bibliogem/LinkedList.rb, line 37 def insert(position, *values) current = @head if position == 0 for value in values.reverse @head = Node.new(nil, value, @head) end else for i in 1..position-1 current = current[:next] end for value in values.reverse current[:next] = Node.new(current, value, current[:next]) end end self end
pop_back()
click to toggle source
# File lib/bibliogem/LinkedList.rb, line 21 def pop_back current = @head until current[:next] == nil current = current[:next] end aux = current[:value] erase(size-1) return aux end
pop_front()
click to toggle source
# File lib/bibliogem/LinkedList.rb, line 31 def pop_front aux = @head[:value] erase(0) return aux end
push_back(value)
click to toggle source
# File lib/bibliogem/LinkedList.rb, line 13 def push_back value insert(size, value) end
push_front(value)
click to toggle source
# File lib/bibliogem/LinkedList.rb, line 17 def push_front value insert(0, value) end
size()
click to toggle source
# File lib/bibliogem/LinkedList.rb, line 74 def size if @head == nil or @head[:value] == nil return 0 end counter = 1 current = @head until current[:next] == nil counter+=1 current=current[:next] end counter end
to_s()
click to toggle source
# File lib/bibliogem/LinkedList.rb, line 87 def to_s current = @head to_s_array = [] until current[:next] == nil to_s_array.push(current[:value]) current=current[:next] end to_s_array.push(current[:value]) p "[#{to_s_array.join(', ')}]" end