C# Linked List (Singly Linked List) nedir?

Bunlar da hoşunuza gidebilir...

4 Cevaplar

  1. Akçay dedi ki:

    Dostum eline sağlık ama bir sorum olacak boyutunu belirlemiyoruz güzel de her eleman kendinden önceki ve sonraki elemanı tutuyorsa belleği sömürmez mi normalde kullanması gereken alanın n veri için 3n-2 kadar veri tutması gerekir bu da istenmeyen birşey değil mi?

    • Gökhan Gökalp Gökhan Gökalp dedi ki:

      Buradaki “bellek sömürmeyi” kendinden sonraki elemanı tutma şeklinde gibi kıyaslamamak gerek performans ölçütü olarak. Çünkü normal bir dizide default olarak atıyorum 1000 length belirtip belleği allocate ediyorsun. Hele ki 1000 length gereksiz ise o veri için. Oysa ki buradaki sormuş olduğun durum dikkat edersen LinkedList yapısı gereğince burdaki Doubly Linked List oluyor kendinden önceki ve sonrakini tutma işlemi zaten var olan eklenmiş elemanın referans’ını tutmakta. Yeni bir eleman daha değil. O yüzden belleği sömürme işlemi olmaz ve dolayısıyla gereksiz length’ler ile belleği allocate etmişde olmayacaksın. Bunun en güzel örneği linkedlist kullanımı streaming işlemlerinde görebilirsin bilinmeyen buffer’ın length belirleme işlemlerinde ve tekrardan sıfırlama vs.

  2. Merhaba, Generic List kullanarak da aynı sonucu elde edemez miydik? Bu kadar zahmete gerek var mıydı? (Ya da bir noktayı kaçırmış olabilirim.)

    • Gökhan Gökalp Gökhan Gökalp dedi ki:

      Merhaba, aslında bunun cevabını yukarıdaki cevabımda da vermiştim. Evet, iş her ne ise yapılabilir Generic List aracılığı ilede. Enterprise seviye de veya gerçekten hafıza yönetiminin önemli olduğu durumlar üzerinde bir uygulama geliştirirken, her nasılsa C programlamada her değişkenin boyutları hesaplanarak kullanıldığı gibi C#’dada gelişi güzel nesneler türetmemeliyiz. Bu gibi durumlarda değişken boyutlu diziler için sabit boyutlu bir dizi oluşturarak memory’i doldurmak pek de iyi olmayacaktır. Onun için Linked List yapıları aracılığı ile değişken yapılara ayak uydurabiliriz en kaba tabiri ile. Hafızanın önemli olduğu durumları Masaüstü cihazlar için düşünmeyin, örneğin windows mobile işletim sistemi kullanan el terminalleri için düşünün 200mb ram’leri bulunan… Saygılarımla.

Bir Cevap Yazın

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

*