Yaygın Kullanılan Veri Yapıları ve Uygulama Alanları

Serdar Tafralı
5 min readApr 11, 2023

Veri Yapıları, saklanan veriler üzerinde işlemleri daha verimli bir şekilde gerçekleştirebilmemiz için verileri bilgisayarlarda düzenlemenin ve depolamanın özel bir formatı olmakla birlikte geniş ve çeşitli bir kullanım alanına sahiptir.

Veri yapıları, geliştirilen hemen hemen her program veya yazılım sisteminde kullanılmaktadır. Ayrıca, veri yapıları Bilgisayar Bilimi ve Yazılım Mühendisliğinin temelleri arasındadır. Veri yapıları, yazılım mühendisliği mülakat soruları kapsamında önemli bir konudur. Bu nedenle geliştiricilerin veri yapıları hakkında iyi bir bilgiye sahip olması gerekmektedir. Aynı zamanda indekslenmiş yapıya sahip olmalarından ötürü rastgele erişim mümkündür.

Dizi (Array):

Verimli veri saklama ve yüksek seviyeden (vektörel) işlemler yapılabilmesini sağlayan bir veri yapısıdır. İçerisinde veri tutarken, bunu fix-type adı verilen, sabitlenmiş bir tipte gerçekleştirerek, birçok veri yapısına kıyasla, çok daha hızlı bir şekilde işlem yapma imkanı sağlar.

Diziler, yığınlar, dizi listeleri, karma tablolar, vektörler ve matrisler gibi diğer veri yapılarını oluşturmak için yapı taşları olarak kullanılmakla birlikte çeşitli sıralama algoritmaları için de kullanılır.

Bağlı liste (Linked list):

Bağlı listeler, birbirine bağlı doğrusal sırada bir dizi öğeden oluşan sıralı bir yapıdır. Bu nedenle, verilere sırayla erişmeniz gerekir ve rastgele erişim mümkün değildir. Bağlantılı listeler, dinamik kümelerin basit ve esnek bir gösterimini sağlar.

Bağlantılı bir listedeki öğeler düğümler olarak bilinir. Her düğüm, bir sonraki olarak bilinen ardıl düğümüne bir anahtar ve bir işaretçi içerir. Kafa (Head) isimli eleman, bağlantılı listenin ilk öğesini gösterir. Bağlantılı listenin son elemanı ise kuyruk (tail) olarak bilinir.

Yığın (Stack):

Yığın, birçok programlama dilinde yaygın olarak bulunabilen bir LIFO (Son Giren İlk Çıkar — en son yerleştirilen öğeye ilk önce erişilebilir) yapısıdır.

bir yığın üzerinde gerçekleştirilebilecek 2 temel işlem vardır. Bunlar yığına eleman eklemek için kullanılan Push ve yığından kullanılmak üzere eleman almak için kullanılan Pop işlemleridir. Yığınlar bazı algoritmaların yapılarında ve birçok yapının (matematiksel ifadeler gibi) değerlendirilmesinde kullanılır.

Kuyruk (Queue):

Kuyruk, birçok programlama dilinde yaygın olarak bulunabilen bir FIFO (First in first out yani İlk Giren İlk Çıkar — ilk yerleştirilen öğeye ilk önce erişilebilir) yapısıdır. Bu yapı, gerçek dünyadaki bir kuyruğa, yani kuyrukta bekleyen insanlara benzediği için “kuyruk” olarak adlandırılmıştır. Kuyruk yapısının temel çalışma mekanizması, kuyruğun sonuna bir öğe eklenmeli ve kuyruğun başından bir eleman silinmesi şeklindedir.

Kuyruk sektörel olarak, bir kod setinin farklı yürütme aşamalarında birkaç işlemci tarafından kullanılabileceği bir teknik olan multithreading yönteminde, iş bölünmelerinin yönetimi aşamasında ve kuyruk yapısıyla çalışan sistemleri geliştirmek amacıyla kullanılır. (örneğin, öncelik sıraları oluşturmanın ve yönetmenin gerektiği yapılar.)

Komut Çizelgesi (Hash Table):

Hash Table, her biri ile ilişkili anahtarlara sahip değerleri saklayan bir veri yapısıdır. Bu yapı aranan değerin bağlı olduğu anahtar değer bilindiği takdirde aramayı çok efektif bir şekilde gerçekleştirmeyi sağlar. Bu nedenle, verilerin boyutundan bağımsız olarak ekleme ve aramada çok verimlidir. Hash tabloları anahtar değer ve çıktı değeri arasındaki bağlantıyı bir hash fonksiyonu kullanarak oluşturur.

Hash tabloları, küme (Set) veri yapısını, veritabanı dizinlerini ve ilişkisel dizileri oluşturmak için kullanılır.

Ağaç (Tree):

Ağaç, verilerin hiyerarşik olarak düzenlendiği ve birbirine bağlandığı hiyerarşik bir yapıdır. Bu yapı bağlantılı listelere benzerdir fakat bağlantılı listeler ağaçlardan farklı olarak doğrusal bir sırayla bağlanır.

Belirli uygulamalara uyum sağlamak ve belirli kısıtlamaları karşılamak amacıyla geçtiğimiz yıllar boyunca çeşitli ağaç türleri geliştirilmiştir. Bazı örnekler; ikili arama ağacı, B ağacı, treap, kırmızı-siyah ağaç, yay ağacı, AVL ağacı ve n-ary ağacıdır.

Ağaç yapılarının bazı uygulamaları:

İfade ayrıştırıcılarını ve çözücülerini oluşturmak ve kablosuz ağlarda kullanılır. Ayriyeten verilerin sürekli girip çıktığı birçok arama uygulamasında kullanılır. Tüm bunlarla beraber java nesnelerini depolamak için JVM (Java Virtual Machine) tarafından kullanılır.

Grafik (Graph):

Grafik yapısı, sonlu sayıda köşe veya düğüm kümesinden ve bu köşeleri birbirine bağlayan bir dizi kenardan oluşur. Birbirlerine aynı kenarla bağlı olan iki düğümün bitişik olarak adlandırıldığı bu yapının genel düzenini köşelerin ve kenarların sayısı belirler.

Grafik yapısına sosyal medya ağlarının temsili örnek verilebilir. Her bir kullanıcının bu yapıda bir tepe noktası olarak betimlendiği durumda, bağlantı kurulan her bir farklı kullanıcı ile arasında bir kenar oluşturur. Farklı bir uygulama alanı olarak, grafik yapısının arama motorları tarafından web sayfalarını ve bağlantıları temsil etmek için kullanılması örnek gösterilebilir. İnternetteki web sayfaları birbirine köprülerle bağlanır. Her sayfa bir tepe noktasıdır ve iki sayfa arasındaki köprü bir kenarı temsil eder. Grafik yapısı ayrıca GPS’de konumları ve rotaları temsil etmek için kullanılır. Konumlar köşelerdir ve konumları birbirine bağlayan rotalar kenarlardır. İki konum arasındaki en kısa rotayı hesaplamak için kullanılır.

Kaynakça:

--

--

Serdar Tafralı

Dedicated and eager lifelong learner with a very solid mathematical background. Deeply passionate about Data Science and Artificial Intelligence