Tweet

Linked List ( Ruby )

LinkedList kavramına gerek java gerekse c# örneklerinde değindik.Her kavramın farklı dillerde nasıl gerçekleştirildiğini göstermek açısından ve diğer diller ile kıyaslanarak pekiştirmek için ruby dili için örnek kod parçacığını ekliyorum.LinkedList hangi dilde olursa olsun mantık aynıdır.Kendisinden önceki ve sonraki nesnenin hangisi olduğu bilgisini tutar.Link ile birbirine bağlıdırlar.Ruby içerisinde linkedlist olayını kullanmak isteyenler için güzel bir örnek..Umarım yararlı olur..

CODE:
class LinkedList

include Enumerable

def initialize
@first = Node.new nil
@last = Node.new nil

@first.next = @last
@last.prev = @first
@size = 0
end

def addLast(object)
node = Node.new(object)
node.next = @last
node.prev = @last.prev

@last.prev.next = node
@last.prev = node
@size += 1
end

def addFirst(object)
node = Node.new(object)
node.prev = @first
node.next = @first.next

@first.next.prev = node
@first.next = node
@size += 1
end

def last
if @size <= 0
raise "Listede nesne bulunmuyor"
end

return @last.prev.object
end

def first
if @size <= 0
raise "Listede nesne bulunmuyor"
end

return @first.next.object
end

def removeLast
if @size <= 0
raise "Listede nesne bulunmuyor"
end

node = @last.prev
node.prev.next = @last
@last.prev = node.prev
@size -= 1

return node.object
end

def removeFirst
if @size <= 0
raise "Listede nesne bulurnmuy"
end

node = @first.next
node.next.prev = @first
@first.next = node.next
@size -= 1

return node.object
end

def size
return @size
end

def each
node = @first.next
while node != @last
yield node.object
node = node.next
end
end

def reverse_each
node = @last
loop do
yield node.object
node = node.prev
if ! node
break
end
end
end

class Node

attr_reader :object
attr_reader :prev
attr_reader :next

attr_writer :next
attr_writer :prev

def initialize(object)
@object = object
end

def dump(io)
io.puts "===== #{self} ====="
io.puts "Object: #{@object}"
io.puts "Prev: #{@prev}"
io.puts "Next: #{@next}"
end
end

end


Kolay gelsin..


Oguzz
oguz@thecoders.net
7 Aralik 2007 18:21

İlgili Olabilecek Makaleler


Yorumlar (0)




Ziyaretçi olarak yorum yazamazsınız. Üye olmak için tıklayın Üye iseniz giriş yapın.



MENÜ » FORUM
Menü » Takip et
RSS Facebook Twitter Friendfeed
Sık Kullanılanlar Google Yahoo Live
Menü » Paylaş
E-Posta ile gönder Twitter Facebook Friendfeed
Buzz Stumbleupon Delicious Digg