Her Programcının Bilmesi Gereken 6 Veri Yapısı

Her Programcının Bilmesi Gereken 6 Veri Yapısı

Yetkin ve başarıya ulaşmış bir programcı olmanın yolu zor olsa gerek, sadece kesinlikle ulaşılabilir bir yoldur. Veri yapıları, her programlama öğrencisinin ustalaşı olması ihtiyaç duyulan temel bir bileşendir ve diziler yada listeler benzer biçimde bazı temel veri yapılarını esasen öğrenmiş yada bunlarla çalışmış olabilirsiniz.

Görüşmeciler veri yapılarla ilgili sorular sormayı tercih etme eğilimindedir, bu yüzden bir iş görüşmesine hazırlanıyorsanız, veri yapıları bilginizi tazelemeniz gerekir. Programcılar ve iş görüşmeleri için en mühim veri yapılarını listelerken okumaya devam edin.

1. Bağlantılı Sıralama

Bağlantılı listeler en temel veri yapılarından biridir ve bir çok veri yapısı kursundaki öğrenciler için çoğu zaman başlangıç noktasıdır. Bağlantılı listeler, sıralı veri erişimine müsaade eden doğrusal veri yapılarıdır.

Bağlantılı listedeki öğeler, işaretçiler kullanılarak bağlanan (bağlı) tek tek düğümlerde depolanır. Bağlantılı bir listeyi, değişik işaretçiler vesilesiyle birbirine bağlı düğümler zinciri olarak düşünebilirsiniz.

İlgili: Java’da Bağlantılı Listeleri Kullanmaya Giriş

Değişik bağlantılı sıralama türlerinin özelliklerine girmeden ilkin, tek tek düğümün yapısını ve uygulamasını idrak etmek oldukca önemlidir. Bağlantılı listedeki her düğümün, listedeki bir sonraki düğüme ve veri öğesinin kendisine bağlayan minimum bir işaretçisi (iki kez bağlı sıralama düğümlerinin iki işaretçisi vardır) vardır.

Her bağlantılı listenin bir baş ve kuyruk düğümü vardır. Tek bağlantılı sıralama düğümlerinde, zincirdeki bir sonraki düğümü gösteren yalnızca bir işaretçi vardır. Sonraki işaretçiye ek olarak, iki kat bağlantılı sıralama düğümlerinin zincirdeki önceki düğümü gösteren başka bir işaretçisi vardır.

Bağlantılı listelerle ilgili mülakat soruları çoğu zaman belirli bir öğenin eklenmesi, aranması yada silinmesi çevresinde döner. Bağlantılı bir listeye ekleme O(1) süre alır, sadece silme ve arama en fena durumda O(n) süre alabilir. Kısaca bağlantılı listeler ideal değildir.

2. İkili Ağaç

ikili ağaç-1
Sıralanmış ikili ağaç

İkili ağaçlar, ağaç ailesi veri yapısının en popüler alt kümesidir; ikili ağaçtaki öğeler bir hiyerarşide düzenlenir. Öteki ağaç türleri AVL, kırmızı-siyah, B ağaçları vb. İkili ağacın düğümleri veri öğesini ve her alt düğüm için iki işaretçi ihtiva eder.

İkili ağaçtaki her üst düğüm en fazla iki alt düğüme haiz olabilir ve her alt düğüm de iki düğümün üst öğesi olabilir.

İlgili: İkili Ağaçlar için Başlangıç Kılavuzu

İkili arama ağacı (BST), verileri, üst düğümden daha minik anahtar değerine haiz öğelerin solda depolandığı ve anahtar kıymeti üst düğümden büyük öğelerin sağda depolandığı sıralanmış bir düzende depolar.

İkili ağaçlar çoğu zaman röportajlarda sorulmaktadır, bu yüzden bir röportaja hazırlanıyorsanız, ikili bir ağacı iyi mi düzleştirebileceğinizi, belirli bir öğeyi iyi mi arayabileceğinizi ve daha fazlasını bilmelisiniz.

3. Karma Tablo

karma tablo-2
Fotoğraf Kredisi: Wikimedia Commons

Karma tablolar yada karma haritalar, verileri dizi biçiminde depolayan son aşama verimli bir veri yapısıdır. Her veri öğesine karma tabloda, verimli arama ve silme elde eden benzersiz bir dizin kıymeti atanır.

Karma eşlemede anahtar atama yada eşleme işlemine karma denir. Karma işlevi ne kadar verimli olursa, karma tablonun kendisinin verimliliği de o denli iyi olur.

Her karma tablo, veri öğelerini bir kıymet dizini çiftinde depolar.

Burada kıymet depolanacak verilerdir ve dizin, öğeyi tabloya eşlemek için kullanılan benzersiz tamsayıdır. Karma işlevler, karma tablonun lüzumlu verimliliğine ve çakışmaları iyi mi çözeceğinize bağlı olarak oldukca karmaşık yada oldukca kolay olabilir.

Çakışmalar çoğu zaman karma işlev değişik öğeler için aynı eşlemeyi ürettiğinde ortaya çıkar; karma harita çakışmaları, açık adresleme yada zincirleme kullanılarak değişik şekillerde çözülebilir.

Karma tablolar yada karma haritalar, şifreleme de dahil olmak suretiyle çeşitli değişik uygulamalara haizdir. Ekleme yada durağan(durgun) O(1) zamanında arama gerektiğinde ilk tercih veri yapısıdır.

4. Yığınlar

yığın görsel

Yığınlar daha kolay veri yapılarından biridir ve ustalaşmak oldukça kolaydır. Yığın veri yapısı aslına bakarsak herhangi bir gerçek yaşam yığınıdır (kutu yada plaka yığınını düşünün) ve LIFO (Last In First Out) şekilde çalışır.

Stacks’in LIFO özelliği, son olarak eklediğiniz öğeye ilkin erişileceği anlamına gelir. Üstündeki öğeleri patlatmadan bir yığındaki üst öğenin altındaki öğelere erişemezsiniz.

Yığınların itme ve pop olmak suretiyle iki birincil işlemi vardır. Push yığına bir unsur eklemek için kullanılır ve pop yığından en üstteki öğeyi kaldırır.

Ek olarak birçok yararlı uygulamaları vardır, bu yüzden görüşmecilerin yığınlarla ilgili sorular sorması oldukca yaygındır. Bir yığının iyi mi tersine çevrileceğini ve ifadelerin iyi mi değerlendirileceğini bilmek oldukça önemlidir.

5. Kuyruklar

Sıra veri yapısının çizimi
Fotoğraf Kredisi: Vikipedi

Kuyruklar yığınlara benzer, sadece FIFO (İlk Çıkanda) şekilde çalışır, kısaca daha ilkin eklediğiniz öğelere erişebilirsiniz. Kuyruk veri yapısı, insanların varış sırasına bakılırsa konumlandığı herhangi bir gerçek yaşam kuyruğu olarak görselleştirilebilir.

Bir sıranın ekleme işlemine sıra adı verilir ve sıranın başından bir öğeyi silme/kaldırma, sıralama olarak adlandırılır.

İlgili: Kuyrukları ve Öncelik Sıralarını Idrak etmek için Başlangıç Kılavuzu

Öncelik sıraları, CPU zamanlaması benzer biçimde birçok mühim uygulamada sıraların ayrılmaz bir uygulamasıdır. Öncelik esnasında, öğeler varış sırası yerine önceliklerine bakılırsa sıralanır.

6. Yığınlar

Bir dizi aracılığıyla uygulanan yığınlar
Yığın Dizisi

Yığınlar, düğümlerin artan yada azalan sırada düzenlenmiş olduğu bir ikili ağaç türüdür. Min Yığında, üst öğenin anahtar kıymeti alt öğelerine eşit yada daha azdır ve kök düğüm tüm yığının en düşük kıymetini ihtiva eder.

Benzer şekilde, Bir Max Yığınının kök düğümü yığının en büyük anahtar kıymetini ihtiva eder; yığın süresince min/max yığın hususi durumunu korumanız gerekir.

İlgili: Yığınlar vs. Yığınlar: Onları Ayıran Nedir?

Yığınlar, oldukca verimli doğası sebebiyle birçok uygulamaya haizdir; ilk olarak, öncelik sıraları çoğu zaman yığınlar vesilesiyle uygulanır. Ek olarak yığın algoritmalarında çekirdek bir bileşendir.

Veri Yapılarını Öğrenin

Veri yapıları ilk başta üzücü görünebilir, sadece kafi süre ayırabilir ve bu tarz şeyleri pasta kadar kolay bulacaksınız.

Programlamanın dirimsel bir parçasıdırlar ve nerede ise her proje bu tarz şeyleri kullanmanızı gerektirecektir. Belirli bir senaryo için hangi veri yapısının ideal bulunduğunu bilmek önemlidir.

Yorum Yap
0 Yorum yapan