2010.06.30 Wednesday
スポンサーサイト
この広告は60日以上更新がないブログに表示されております。
新しい記事を書くことで広告を消すことができます。
新しい記事を書くことで広告を消すことができます。
| - | | - | - | pookmark |
require 'lib/node'
class List < Array
def initialize
@node_lists = []
end
def add(arg='')
node = Node.new
node.value = arg
node.prev = @node_lists.last
node.next = nil
@node_lists.last.next = node if @node_lists.length > 0
@node_lists << node
end
def find(arg)
@node_lists.find { |node| node.value == arg }
end
def values
@node_lists.map { |node| node.value }
end
def delete(node)
return nil if @node_lists.empty?
pos = @node_lists.index(node)
if @node_lists[pos+1].nil? || @node_lists[pos-1].nil?
@node_lists[pos-1].next = nil unless @node_lists[pos-1].nil?
@node_lists[pos+1].prev = nil unless @node_lists[pos+1].nil?
else
@node_lists[pos-1].next = @node_lists[pos+1]
@node_lists[pos+1].prev = @node_lists[pos-1]
end
@node_lists.delete_at(pos)
end
end
class Node
attr_accessor :value
attr_accessor :next
attr_accessor :prev
end