From: "Y.Tokutomi" Date: 2004-11-02T09:45:33+09:00 Subject: [ruby-list:40159] Re: 求む,もっとましな連結リストの実装 はじめまして。徳冨です。 気分転換に作ってみました。インターフェンスコンパチではありませんし、方法 も違うので参考にならないかもしれませんが…。delete は実装してません。 --- ソース #!/usr/local/bin/ruby class Cell def initialize(data) @data = data @nextCell = nil end attr_writer(:nextCell) protected(:nextCell=) # 自身の次に挿入 def insert(data) temp = Cell.new(data) temp.nextCell, @nextCell = @nextCell, temp return temp end # 検索-任意 def find(data) return self if @data == data return nil if @nextCell.nil? return @nextCell.find(data) end # 検索-末尾 def last return self if @nextCell.nil? return @nextCell.last() end # 自身以降の limit 個まで表示 (nil なら末尾まで) def show(limit=nil) puts datas([], limit).join(" -> ") end def datas(datas, limit=nil) return datas << @data if @nextCell.nil? return datas if (!limit.nil? && datas.size == limit) return @nextCell.datas(datas << @data, limit) end end # 動作確認 current = first = Cell.new("こぶた") %w!たぬき きつね ねこ こあら!.each {|data| current = current.insert(data) } first.show first.insert("きつつき") first.show first.find("ねこ").insert("らっこ") first.show first.show(2) first.find("たぬき").show(3) first.show(100) first.last.insert("きじ") first.show first.find("ねこ").insert("らっこ").insert("あるまじろ") first.show --- ここまで それでは。 ----------------------- -- Yuichi TOKUTOMI -- ytokutomi@mac.com -----------------------