class LinkedList::Doubly

Public Class Methods

new(data) click to toggle source
# File lib/linked_list_sourav.rb, line 144
def initialize(data) # intializes
  @count = 1
  if data.respond_to? :each
    @head = DoublyNode.new(data[0])
    data.each.with_index { |datum, index| self.add(datum) if index > 0}
  else
    @head = DoublyNode.new(data)
  end
  self
end

Public Instance Methods

add(data) click to toggle source
# File lib/linked_list_sourav.rb, line 155
def add(data) # adds data to list
  dnode = @head
  while (dnode.forward != nil)
    dnode = dnode.forward
  end
  dnode.forward = DoublyNode.new(data, dnode)
  @count += 1
  self
end
delete(data) click to toggle source
# File lib/linked_list_sourav.rb, line 165
def delete(data) # deletes a node
  dnode = find(data)
  if dnode
    if dnode === @head
      @head = dnode.forward
    elsif dnode.forward == nil
      prev_dnode = dnode.backward
      prev_dnode.forward = nil
    else
      prev_dnode, next_dnode = dnode.backward, dnode.forward
      prev_dnode.forward, next_dnode.backward = next_dnode, prev_dnode
    end
    @count -= 1
  end
  dnode = nil
end