I have created a LinkedList in Ruby and was wondering if anyone had any input on efficiencies that I could add or deficiencies I could remove.
module LinkedList
class List
attr_accessor :node
def initialize
self.node = nil
end
def add(node)
if self.node.nil?
self.node = node
else
current_node = self.node
while ! current_node.getPointer.nil? do
current_node = current_node.getPointer
end
current_node.setPointer node
end
end
def get(node)
current_node = self.node
data_match = nil
while !current_node.getPointer.nil? and ! data_match.nil? do
data_match = current_node.getData if node.getData == current_node.getData
current_node = current_node.getPointer
end
return current_node
end
def remove(node)
previous_node = nil
current_node = self.node
next_node = current_node.getPointer
while ! current_node.nil? do
if current_node.getData == node.getData and current_node.getData == self.node.getData
self.node = next_node
return true
end
if current_node.getData == node.getData
previous_node.setPointer next_node
return true
end
previous_node = current_node
current_node = next_node
next_node = current_node.getPointer
end
return false
end
def print
current_node = self.node
while ! current_node.nil? do
pointerData = current_node.getPointer.nil? ? nil : current_node.getPointer.getData
puts "data=#{current_node.getData}, pointer=#{pointerData}"
current_node = current_node.getPointer
end
puts
end
end
class Node
attr_accessor :data
attr_accessor :pointer
def initialize(data = nil, pointer = nil)
self.data = data
self.pointer = pointer
end
def getData
return self.data
end
def getPointer
return self.pointer
end
def setData(data)
self.data = date
end
def setPointer(node)
self.pointer = node
end
end
end
getgoing to return the node after the one with the match? \$\endgroup\$