Anasayfa » Jquery » Linked List ( Ruby )

Linked List ( Ruby )

12 Nisan 2010  |  Yazar: coders  |  Yorum Yok  |  10 kez okundu
Facebook'da Paylaş Twitter'da Paylas FriendFeed'de Paylaş Linked List ( Ruby )

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 ile kıyaslanarak pekiştirmek için 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. içerisinde linkedlist olayını kullanmak isteyenler için güzel bir örnek..Umarım yararlı olur..

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 :o bject

                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..

OĞUZ Kırat

Facebok'ta Paylaş

Benzer Yazılar

Etiketler: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
avatar

Ahmet Ates

http://www.coders.gen.tr/ 25 yasindayim. Z.K.U Biyomedikal Cihaz Teknolojisi bölümünü okudum, Programlama dilleri arasindan ilgilendiğim ve profesyonel olarak hizmet verdiğim dil Fortran'dir. Web olarak Php,Css ve hazır sistemler olarak Wordpress ve Vbulletine hayranlık besliyorum.

Bu yazı hakkında birşeyler demek ister misiniz?

RSS üzerinden bu yazıya yapılan yorumları takip edin.

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir.

Şu HTML etiketlerini ve özelliklerini kullanabilirsiniz:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>


Programlama