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