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