Bu yazımızda veri yapıları nedir sorusunu yanıtlıyoruz. Veri Yapıları temelde dinamik veri kullanımı ile ilgilidir. Dinamik verinin nasıl saklanacağı sorusuna cevap vermeye çalışır.

Programlama sürecinde verilerimizi bir takım yöntemlerle saklamak bir yazılımcının en önemli sorunlarından bir tanesidir. Veri Saklamanın değişik yöntemleri olsa da genel konsept olarak veriler kalıcı ya da geçicici olarak saklandığını söyleyebiliriz. Bir program çalışırken kaydedilen bilgilere daha sonra da erişilmek isteniyorsa bu verileri kalıcı olarak saklarız. Sakladığımız ortam bir dosya ya da veri tabanı olabilir. Veri Yapılarının konusu kalıcı veri saklamakla ilgili değildir. Veri Yapıları konusu programın çalışma zamanında (runtime) saklanan veri türleri ile ilişkilidir.

Çoğu kişi Veri Yapıları ile ilgili kafa karışıklığı yaşamaktadır. Çünkü her programlama dili kendisine has bir veri yapısı türü tutabilir. Örneğin günümüzde sıklıkla kullanılan Liste yapıları ya da Dictionary yapıları da bir veri yapısıdır. Veri Yapıları konusu işlenirken, öncelikli olarak değişken tiplerini hatırlamamız gerekir. Yazılım geliştirirken kullandığımız temel değişken tipleri primitive değişkenler olarak adlandırılmaktadır. Yaygın olarak kullanılan pritimive (İlkel) değişken tipleri aşağıdaki gibidir.

  1. Integer (Tam Sayılar): Tam sayılar, pozitif veya negatif tam sayı değerlerini temsil eder. Örnek: 5, -10, 0.
  2. Float (Ondalıklı Sayılar): Ondalıklı sayılar, virgülle ayrılan sayıları temsil eder. Örnek: 3.14, -0.5, 2.0.
  3. Boolean (Boolean Değeri): Boolean değişkenleri yalnızca iki değere sahip olabilir: True (Doğru) veya False (Yanlış).
  4. Character (Karakterler): Karakter değişkenleri tek bir karakteri temsil eder. Örnek: ‘A’, ‘b’, ‘1’.
  5. String (Diziler): Dize (string) değişkenleri metin verilerini temsil eder. Örnek: “Merhaba Dünya”, ‘Python’, “123”.
  6. Byte (Baytlar): Bayt değişkenleri genellikle verileri ikili olarak saklamak veya işlemek için kullanılır. Byte dizileri, özellikle dosya işlemleri ve ağ iletişimi için kullanışlıdır.
  7. Null veya Undefined (Tanımsız): Bu, bir değişkenin henüz bir değere sahip olmadığını veya değerinin belirli bir değer olmadığını gösterir. Çoğu dilde farklı isimlerle temsil edilir (örneğin, null, undefined).
  8. Symbol (Sembol): Sembolik verileri temsil etmek için kullanılan özel bir veri türüdür. Genellikle dil tarafından benzersiz bir şekilde oluşturulan sembollerdir.
  9. BigInt (Büyük Tam Sayılar): Çok büyük tam sayıları temsil etmek için kullanılır. Bu, bazı dillerde varsayılan olarak sunulurken, diğerlerinde özel bir kütüphane kullanılarak elde edilebilir.

Programlama dilleri genel olarak bizlere bu değişken tiplerini sunarlar. Biz ihtiyacımız doğrultusunda bu değişken tiplerini kullanırız. Bu değişken türleri de veri yapıları türlerinin bir parçasıdır. Ancak biz veri yapıları konusunda primitive olmayan veri yapıları üzerinde duracağız.

Veri Yapıları Kategorizasyonu

Veri Yapıları temelde primitif ve primitif olmayan veri yapıları şeklinde ikiye ayrılır. Bir önceki bölümde primitif veri yapılarının neler olduğuna kısaca değindik. Primitif olmayan veri yapılarını da kendi içerisinde ikiye ayırıyoruz. Lineer Veri Yapıları ve Lineer Olmayan Veri Yapıları Şeklinde. Lineer Veri Yapılarını da kendi içerisinde ikiye ayırıyoruz. Kelimelere dökmek, şu noktada kafa karışıklığından öteye gitmeyen bir yöntem olduğundan öncelikte bir görselle durumu izah etmek çok daha iyi olacak.

Tabloya baktığımızda primitive türlerin daha da genişletilebileceğini rahatlıkla söyleyebiliriz. Bizim esas derdimiz primitive olmayan veri yapıları. Bu türlerde Lineer (Doğrusal) ve Lineer olmayan şeklinde bir kategorizasyon yapıldığını görüyoruz.

Lineer veri yapıları kendi içerisinde statik ve dinamik şeklinde ikiye ayrılıyor. Dinamik ve statik ibareleri esasında runtime’da yani çalışma zamanındaki durumla ilgilidir. Diziler Statik bir veri yapısıdır, çünkü boyutları çalışma zamanında genişletilemez. Örneğin 10 elemanlı dizi oluşturduysak, 11. Elemanı çalışma zamanında ekleyemeyiz.

Dinamik veri yapıları veri yapıları konusunun giriş kısmını oluşturur. Bağlı Listeler (Linked Lists), Stack veri yapısı ve Queue (Kuyruk) Veri yapısı en temel veri yapıları konularıdır. Lineer olmalarının sebebi doğrusal bir şekilde veri tutmalarıdır. Lineer olmayan veri yapıları ise daha ileri bir veri yapıları konularını içermektedir. Ağaçlar (Tree) ve Graph’lar da veri yapılarının özelleşmiş formlarıdır.

Aslında bir yazılımcı istediği şekilde veri yapısı oluşturabilir. Burada anlatılan veri yapıları, en çok kullanılan, kullanım kolaylığı ve avantajları sebebiyle tercih edilen veri yapılarıdır. Kullanıcıların oluşturduğu veri yapılarına Abstract Data Types (Soyut veri yapıları) ismi de verilmektedir.

Sitemizde Veri Yapıları konuları Arrays (Diziler) ile başlayıp tablodaki sıralamada devam edecektir. Bu yazımızda Veri Yapıları Nedir Sorusunu cevaplamaya çalıştık.