Veri Yapıları Listeler

 Veri Yapıları Listeler
Okunuyor Veri Yapıları Listeler

Selamün aleyküm arkadaşlar Veri Yapıları Listeler günlük hayatta listeler,programlama açısından listeler gibi bir çok alanda listeler kullanıyoruz.Şimdi Veri yapıları listelerine değineceğiz.

Veri Yapıları Listeler

Günlük hayatta listeler; alışveriş listeleri , telefon listeleri ve davetiye listeleri vs kullanılır

Programlama açısından liste ; aralarında doğrusal ilişki olan veriler topluluğu olarak görülebilir.

Veri yapılarında değişik biçimlerde listeler kullanılır.Üzerlerinde değişik işlemler yapılmaktadır.Veri yapılarındaki liste isimleri örnek verecek olursak; Doğrusal listeler(Diziler), Bağlı Listeler, Tek yönlü bağlı listeler vb

Doğrusal Listeler ( Diziler )

Diziler(arrays), doğrusal listeleri oluşturan yapılardır. Bu yapıların özellikleri şöyle sıralanabilir:

Doğrusal listelerde süreklilik vardır. Dizi veri yapısını ele alırsak bu veri yapısında elemanlar aynı türden olup bellekte art arda saklanırlar.

Dizi elemanları arasında başka elemanlar bulunamaz. Diziye eleman eklemek gerektiğinde (dizinin sonu hariç) dizi elemanlarının yer değiştirmesi gerekir.

Dizi program başında tanımlanır ve ayrılacak bellek alanı belirtilir. Program çalışırken eleman sayısı arttırılamaz veya eksiltilemez.

Dizinin boyutu baştan çok büyük tanımlandığında kullanılmayan alanlar oluşabilir.

Diziye eleman ekleme veya çıkarmada o elemandan sonraki tüm elemanların yerleri değişir. Bu işlem zaman kaybına neden olur.

Dizi sıralanmak istendiğinde de elemanlar yer değiştireceğinden karmaşıklık artabilir ve çalışma zamanı fazlalaşır.

Bağlı Listeler (Linked Lists)

Bellekte elemanları ardışık olarak bulunmayan listelere bağlı liste denir.

Bağlı listelerde her eleman kendinden sonraki elemanın nerede olduğu bilgisini tutar. İlk elemanın yeri ise yapı türünden bir göstericide tutulur. Böylece bağlı listenin tüm elemanlarına ulaşılabilir.

Bağlı liste dizisinin her elemanı bir yapı nesnesidir. Bu yapı nesnesinin bazı üyeleri bağlı liste elemanlarının değerlerini veya taşıyacakları diğer bilgileri tutarken, bir üyesi ise kendinden sonraki bağlı liste elemanı olan yapı nesnesinin adres bilgisini tutar.

Bağlantılı liste yapıları iki boyutlu dizi yapısına benzemektedir. Aynı zamanda bir boyutlu dizinin özelliklerini de taşımaktadır.

Bu veri yapısında bir boyutlu dizilerde olduğu gibi silinen veri alanları hala listede yer almakta veri silindiği halde listenin boyu kısalmamaktadır.

Eleman eklemede de listenin boyutu yetmediğinde kapasiteyi arttırmak gerekmektedir. Bu durumda istenildiği zaman boyutu büyütülebilmesi ve eleman çıkarıladığında listenin boyutunun kendiliğinden küçülmesi için yeni bir veri yapısına ihtiyaç vardır.

Doğrusal veri yapılarında dinamik bir yaklaşım yoktur. İstenildiğinde bellek alanı alınamaz ya da eldeki bellek alanları iade edilemez. Bağlantılı listeler dinamik veri yapılar olup yukarıdaki işlemlerin yapılmasına olanak verir. Bağlantılı listelerde düğüm ismi verilen bellek büyüklükleri kullanılır.

Bağlantılı listeler çeşitli tiplerde kullanılmaktadır;

Tek yönlü doğrusal bağlı liste

İki yönlü doğrusal bağlı liste

Tek yönlü dairesel bağlı liste

İki yönlü dairesel bağlı liste

Örnek: C dilinde bağlı liste yapısı

{ int data;

struct ListNode*next;

}

Örnek: Java dilinde bağlı liste yapısı

public class ListNode

{

int data;

public ListNode next;

}

 

Bağlı Listelerle Dizilerin Karşılaştırılması;

Diziler;

Boyut değiştirme zordur

Yeni bir eleman ekleme zordur

Bir elemanı silme zordur

Dizinin tüm elemanları için hafızada yer ayrılır

Bağlı listeler ile bu problemler çözülebilir.

 

Bağlı listenin ilk elemanının adresi global bir göstericide tutulabilir.

Son elemanına ilişkin gösterici ise NULL adresi olarak bırakılır. Bağlı liste elemanları malloc gibi dinamik bellek fonksiyonları ile oluşturular.

Ayrıca,

Her dizi elemanı için ayrı hafıza alanı ayrılır.

Bilgi kavramsal olarak sıralıdır anacak hafızada bulunduğu yer sıralı değildir.

Her bir eleman (node) bir sonrakini gösterir.

Listeler;

Listedeki her bir eleman data (veri) ve link (bağlantı) kısmından oluşur. Data kısmı içerisinde saklana             bilgiyi ifade eder. Link kısmı ise kendisinden sonraki elamanı işaret eder.

public class ListNode
{
int data;
public ListNode sonraki;      
}

 

 

Listede bir başlangıç (head) elemanı, birde sonucu (tail) elamanı vardır.

Listede aktif (current) eleman şu anda bilgilerine ulaşabileceğimiz elemandır.

Bağlı Liste İşlemleri

Listeler ile yapılan işlemleri,

Listeye eleman ekleme

Başa

Sona

Sıralı

Listeden eleman silme

Baştan

Sondan

Tümünü

Belirlenen bilgiye sahip elemanı

İstenen sıradaki elemanı

Arama

Listeleme

İstenen bilgiye göre

Kontrol

Boş liste

Liste boyutu

Tek Yönlü Bağlı Listeler

Listedeki elemanlar arasında sadece tek bir bağ vardır. Bu tür bağlı listelerde hareket yönü sadece listenin başından sonuna doğrudur.

Bağlı bir listeye eleman eklemek için önce liste tanımlanır.

Bunun için listede tutulacak verinin türü ve listenin eleman sayısı verilir.

Bağlı bir listeden eleman silme; önce listeden çıkarılmak istenen eleman bulunur. Eğer silinecek eleman listede yoksa bu durum bir mesaj ile bildirilir. Eleman bulunduğunda bağ alanlarında güncelleme yapılarak eleman listeden silinir.

Yapılan Yorumlar

Bir Cevap Yazın

This site uses Akismet to reduce spam. Learn how your comment data is processed.