class Algorithmable::DataStructs::LinkedList::Doubly

Public Instance Methods

delete(item) click to toggle source
# File lib/algorithmable/data_structs/linked_list/doubly.rb, line 55
def delete(item)
  node = search(item)
  return unless node

  prev_node = node.prev
  next_node = node.next

  if prev_node.nil?
    @front = next_node
  else
    prev_node.next = next_node
  end

  if next_node.nil?
    @back = prev_node
  else
    next_node.prev = prev_node
  end

  @size -= 1
  item
end
pop_back() click to toggle source
# File lib/algorithmable/data_structs/linked_list/doubly.rb, line 51
def pop_back
  delete peek_back
end
pop_front() click to toggle source
# File lib/algorithmable/data_structs/linked_list/doubly.rb, line 47
def pop_front
  delete peek_front
end
push_back(item) click to toggle source
# File lib/algorithmable/data_structs/linked_list/doubly.rb, line 32
def push_back(item)
  prev_back = @back
  node = Node.new item, prev_back, nil
  @back = node

  if prev_back
    prev_back.next = node
  else
    @front = node
  end

  @size += 1
  item
end
push_front(item) click to toggle source
# File lib/algorithmable/data_structs/linked_list/doubly.rb, line 17
def push_front(item)
  prev_front = @front
  node = new_node item, nil, prev_front
  @front = node

  if prev_front
    prev_front.prev = node
  else
    @back = node
  end

  @size += 1
  item
end

Private Instance Methods

new_node(item, prev_pointer = nil, next_pinter = nil) click to toggle source
# File lib/algorithmable/data_structs/linked_list/doubly.rb, line 80
def new_node(item, prev_pointer = nil, next_pinter = nil)
  Node.new item, prev_pointer, next_pinter
end