25 Nisan 2013 Perşembe

C# (Linked List)

BAĞLAÇLI LİSTELER

LINKED LIST

LİSTELER
Günlük yaşamda listeler pek çok yerde kullanılmaktadır. Alışveriş listeleri, adres listeleri, davetli listeleri gibi. Bilgisayar programlarında da listeler yararlı ve yaygın olarak kullanılan veri yapılarındandır. Programlama açısından liste, aralarında doğrusal ilişki olan veriler topluluğu olarak görülebilir.
BAĞLAÇLI LİSTELER
Kendi tipindeki bir yapıyı gösteren bir işaretçi üyesine sahip yapılara self-referential structes adı verilir. Örnek olarak:
Class Dugum //node
{
Private string veri,//info
Private DUgum sonraki;//next
……
}
yapısı, veri adlı string tipli bilgi elemanının yanında, bir düğüm yapısında bir bellek bölgesine işaret eden sonraki (next) işaretçisine sahiptir. Bu tür yapıların arka arkaya birbirine bağlanması mantığı listelerde oldukça yararlıdır.
Listedeki her düğümde bir sonraki düğümün adresinin tutulduğu veri yapısı (doğrusal) bağlı liste olarak adlandırılır. Listenin her bir elemanına düğüm (node) adı verilir. Düğümler, bilgi ve bağ (adres) sahalarından oluşmaktadırlar. Bağ sahalarında referanslar kullanılmaktadır. Listenin ilk elemanına dışarıdan bir referans (list) ile erişilmektedir. Diğer düğümlere de bağlar yardımı ile ulaşılabilmektedir. Son düğümün sonraki adres (sonraki) sahası NULL değerini içerir. NULL bağlı, liste sonunu belirtir. Elemanı olmayan liste boş liste olarak adlandırılır.
Sıralı bellek kullanımının (dizi) en büyük dezavantajı, hiç kullanılmasa veya az kullanılsa bile sabit miktardaki belleğin bu yapılara ayrılmış olarak tutulmasıdır. Ayrıca sabit bellek miktarı aşıldığında da taşma oluşması ve eleman ekleme işleminin yapılamamasıdır. Bağlaçlı listeler üzerinde gerçekleştirildiklerinde ise bu problemler ortadan kalkmaktadır. Bellekten sadece gerektiği kadar yer ayrılmakta ve bellek boyutu bitene kadar bu yapılara ekleme işlemi yapılabilmektedir.
Bağlaçlı listeler, başka veri yapılarının gerçekleştiriminde kullanılabildikleri gibi kendileri de veri yapısıdırlar. Bağlaçlı listelerde elemanların ekleme ve çıkarılmasında bir sınırlama yoktur. Başa ve sona olduğu gibi araya da eleman eklenebilir; baştan ve sondan olduğu gibi ortadan da eleman çıkarılabilir. Bağlaçlı liste dolaşılarak herhangi bir elemanına erişilebilir. Bir bağı listenin n. elemanına erişmek için n tane işlem yapmak yani kendinden önceki (n-1) eleman üzerinden geçmek gerekmektedir. Elemanların bellekteki yerleri dizilerdeki gibi sıralı olmadığından elemanlar ve sıraları ile yerleştikleri bellek bölgeleri arasında bir ilişki yoktur.
Bağlaçlı listelerin diziler üzerine avantajı, bir grup eleman arasına eleman eklemede ve bir grup eleman çıkarmada ortaya çıkar.
Dizilerde bir eleman silerken arada boşluk kalmasını engellemek için ilerisindeki (sağındaki) tüm elemanları bir geriye (sola) kaydırmak gerekir. Eleman eklemede de yer açmak için konulacağı yerdeki ve ilerisindeki elemanları bir ileriye (sağa) kaydırmak gerekecektir. Kaç tane elemanın yer değiştireceği (birer kaydırılacağı) dizi boyutuna bağlı olarak ve eklenecek elemanın yerine bağlı olarak değişecektir. Bağlaçlı listelerde ise eleman ekleme ve çıkarma için yapılan iş liste boyutundan bağımsızdır.
Bağlaçlı Listede Kullanılan Sınıflar:
Dugum                 : Tek düğüme ilişkin veriler ve işlemler
Liste                      : Listeye ilişkin veri ve işlemler
ListeTest             : Listenin test edilmesi

Hiç yorum yok:

Yorum Gönder