shtakai
5/16/2016 - 9:29 PM

linked list(dirty)

linked list(dirty)

require 'pp'

class LinkedList
  attr_accessor :head

  def initialize(head=nil)
    @head = head
    head
  end

  def add_to_head(node)
    node.next = @head
    @head = node
    node
  end

  def add_to_tail(node)
    last = traverse
    last.next = node
    node
  end

  def traverse
    runner = @head
    while(runner.next)
      runner = runner.next
    end
    runner
  end

  def has_value(value)
    runner = @head
    while(runner.next)
      if runner.value == value
        pp "value found:#{value} on Node:#{runner}"
        break
      end
      runner = runner.next
    end
  end

end


class Node
  attr_accessor :next, :value
  def initialize(value)
    @value = value
    @nxt = nil
  end
end

node_1 = Node.new("node_1")
node_2 = Node.new("node_2")
node_3 = Node.new("node_3")
node_4 = Node.new("node_4")
node_5 = Node.new("node_5")

list = LinkedList.new(node_1)
list.add_to_head node_2
list.add_to_head node_3
list.add_to_head node_4
list.add_to_head node_5


node_6 = Node.new("node_6")
list.add_to_tail(node_6)
pp list


list.has_value("node_3")