Bağlı Liste (Linked List)
Verilerin array (sıralı liste) kullanarak organize edildiğini biliyoruz. Sıralı listelerde arama, ekleme, silme ve silme yapıyoruz. Eğer veriler sıralanmışsa listede bir öğeyi aramak çok zaman alır. Bu aramayı kısaltmak için binary (ikili) arama kullanılsa da bu durumda ekleme ve silme zaman alıcı hale gelir. Dizi boyutu işlem yaparken sabitleneceği için yeni öğeler, yalnızca yer varsa eklenir. Bu sorunları ortadan kaldırmak için pointers (işaretçiler) kullanılır.
Bağlantılı listeler, en basit ve en yaygın veri yapılarındandır. Bağlantılı listenin bir avantajı veri öğelerini depolamak gerekmediğinden, tüm yapının yeniden yapılandırılmasına gerek kalmadan liste öğelerinin kolayca eklenip çıkarılmasıdır.
Düğüm adı verilen bileşen koleksiyonudur. Her düğüm (son düğüm hariç) kendinden sonraki düğümün adresini içerir. Bu yüzden bağlantılı listedeki her düğümün iki bileşeni vardır.
- 1.Verileri (bilgileri) toplamak için.
- 2.Adresi depolamak için.
Listedeki ilk düğümün adresi ise ayrı bir konumda saklanır, baş veya ilk denir.
Düğümlerin sırasının, her düğümde depolanan bağlantı (link) adı verilen adrese göre belirlendiği, düğüm (node) adı verilen bir öğe listesi.
Her düğümdeki ok, işaret ettiği düğümün adresinin o düğümde depolandığını gösterir.
Son düğümdeki aşağı ok ise bu bağlantı alanının NULL olduğunu gösterir.
Yukarıdaki bağlantılı listenin 4 tane düğümü vardır. İlk düğümün adresi işaretçi başlığında saklanır. Her düğümün 2 bileşeni vardır. İnfo bilgiyi saklamak için ve link bir sonraki düğümün adresini saklamak için.
İlk olarak, genel olarak bağlantılı bir listeyi ele alıyoruz. Okuduğumuz veriler sıralanmamışsa, bağlantılı liste sıralanmayacaktır. Böyle bir liste ileriye ve geriye doğru iki şekilde oluşturulabilir. İleriye doğru, bağlantılı listenin sonuna her zaman yeni bir düğüm eklenir. Geriye dönük olarak, her zaman listenin başına yeni bir düğüm eklenir.
Yığın (Stack)
Yığınları, özyinelemeli (recursive) algoritmaları özyinelemeli olmayan (non-recursive) algoritmalara veya tam tersi olarak kullanabiliriz. Yığın öğelerin eklenmesinin ve silinmesinin yığının tepesi adı verilen yalnızca bir uçta gerçekleştiği homojen öğeler listesidir. Örneğin, bir kitap yığınında ikinci kitap yalnızca ilk kitap çıkarıldıysa çıkarılabilir.
Yığının en altındaki elemanlar en uzun yığında yer alır. Yığının en üst elemanı, yığına eklenen son elemandır. Çünkü öğeler bir uçtan (üstten) eklendiği ve kaldırıldığı için, en son eklenen öğe ilk önce kaldırılır. Bu yüzden bir yığın aynı zamanda Son Giren İlk Çıkar (LIFO) veri yapısı olarak da adlandırılır.
Yığına yeni öğeler eklenebildiğinden yeni bir öğe eklemek için push adı verilen ekleme işlemini gerçekleştiririz. Yığından yeni öğeler alınabildiğinden veya kaldırılabildiğinden yığının en üst öğesini almak için top işlemini, en üst elemanı çıkarmak için pop işlemini gerçekleştirebiliriz.
Kuyruk (Queue)
Öğelerin bir ucundan eklendiği, diğer ucundan silindiği veri yapısı. İlk Giren İlk Çıkar (FIFO) veri yapısı.
Öğelerin bir uçta eklendiği, arka (back-rear) olarak adlandırılan ve diğer uçtan silindiği ön (front) adı verilen aynı türden öğeler kümesidir.
Örnek olarak para yatırma ve çekme işlemi yapmak için sırada bekleyen insanları düşünelim, her yeni müşteri bir öncekinin arkasına sıraya girer. Yeni bir müşteri geldiğinde hattın önündeki müşteriye hizmet verilir.
Kuyruğa her yeni öğe eklendiğinde kuyruğun arkasına, kuyruktan her öğe silindiğinde kuyruğun önüne erişilir. Yığında olduğu gibi, kuyruk öğeleri bir dizide saklansa bile kuyruğun orta öğelerine erişilemez.
Top comments (0)