PDF hazırlanıyor...

Veri Yapıları 1

Yazar: Tuğba Karataş
Tarih: 07 Eylül 2025

Programlama dünyasında doğru veri yapısını seçmek, bir mimarın en sağlam temeli atması gibidir. Bu seride, temelden ileri seviyeye tüm veri yapılarını inceliyor, hangi durumda hangisini kullanmanız gerektiğini detaylıca anlatıyor olacağız. Hazırsanız ilk adımı atarak başlayalım!

Veri Yapılarına Giriş

Bilgisayar hafızasında bir değeri depolama işlemi, değişkenler adı verilen ayrılmış alanlar üzerinden yapılır. Her değişkenin alabileceği değerler, sahip olduğu veri tipi tarafından belirlenir. Veri tipleri temelde iki ana gruba ayrılır: yerleşik ve kullanıcı tanımlı.

 

1. Yerleşik Veri Türleri (Built-In Data Type)

Bu tipler kullanılan programlama dili üzerinde önceden tanımlanmış temel veri tipleridir. En sık kullanılanlardan bazıları şunlardır:

  • int (Integer): Tam sayıları ifade etmek için kullanılır (Örneğin, -5, 0, 42).

  •  
  • string: Karakter dizilerini tanımlar ve genellikle çift tırnak (") ile değer atanır. Örneğin: string isim = "Zeynep";. İçinde sayılar olsa bile, bu değişkenlerle doğrudan matematiksel işlem yapılamaz.

  •  
  • char: Tek bir karakteri temsil eder ve genellikle tek tırnak (') ile değer atanır. Örneğin: char operator = '+';.

  •  
  • float ve double: Ondalıklı sayıları temsil eder. double tipi, float'a göre daha fazla ondalık basamağı depolayarak daha hassas hesaplamalara imkân tanır.

  •  
  • bool (Boolean): Sadece iki değer alabilen (True/False veya 1/0) mantıksal bir veri tipidir. Genellikle kontrol yapıları (Örneğin, if ve while döngüleri) içinde kullanılır.

  •  
  • object: Bu veri tipi, herhangi bir veri türündeki veriyi referans olarak tutabilir. Herhangi bir veri türünü temsil edebilen genel bir veri tipidir.

 

2. Kullanıcı Tanımlı Veri Türü (Custom Data Type)

Bu veri türleri ilgili programlama dili kuralları çerçevesinde kullanıcı tarafından oluşturulan veri tipleridir. struct ve class en yaygın örneklerindendir.

  • struct (Yapı): Farklı türdeki verileri tek bir çatı altında gruplamanızı sağlar. Örneğin, bir öğrenciyi tanımlamak için adını, numarasını ve notunu Ogrenci adında bir struct içinde birleştirebilirsiniz. Bu, kodunuzu daha düzenli ve okunabilir hale getirir.

  •  
  • class (Sınıf): struct'a benzer şekilde verileri bir araya getirebilir ancak içinde bu verilere ait fonksiyonları (metotları) da barındırabilir. Bu özelliğiyle Nesne Yönelimli Programlamanın (OOP) temelini oluşturur. class'lar, struct'lardan daha kapsamlı ve esnek yapılar sunar.

 

Veri Yapıları Nedir ve Neden Önemlidir?

Yüz binlerce kullanıcının verisini en hızlı şekilde nasıl işleyebilirsiniz? Bir e-ticaret sitesi, ürün aramalarını saniyenin altında nasıl gerçekleştirir? Tüm bu soruların cevabı tek bir kavramda saklı: Veri Yapıları.

Veri yapıları, veriye erişim, veriyi depolama, verinin organizasyonunu temsil eden bir kavramdır. Veriyi bellekte organize etme, veri yapısı üzerinde veri arama, ekleme, çıkarma işlemlerini sağlar. Programlama dillerinin sağladığı temel veri tiplerini (int, string, float) kullanarak daha büyük ve daha karmaşık verileri organize etmemizi sağlar. Özetle; veri yapıları birincil ve ikincil bellekte depolanan verileri organize etmek ve büyük miktardaki verileri verimli bir şekilde yönetmek için kullanılır.

Verimli veri yapıları verimli algoritmaların anahtarıdır. Yani güçlü algoritmalar oluşturmak için veri yapılarını bilmek ve kullanmak lazımdır.

 

Veri Yapılarını Neden Öğrenmeliyiz?

Veri yapılarının ne olduğunu anlamak kadar, neden bu kadar önemli olduklarını kavramak da kritiktir. İşte programcılık kariyerinizde size sağlayacağı üç temel fayda:

1. Performans ve Hız

Yanlış veri yapısını seçmek, uygulamamızın performansını ciddi şekilde düşürebilir. Doğru bir veri yapısı ise, büyük miktardaki veriyi işlerken bir görevi saniyelerden milisaniyelere indirebilir. Bu, özellikle büyük veri setleriyle çalışan uygulamalar için hayati önem taşır.

 

2. Bellek Verimliliği

Her veri yapısı, belleği farklı bir şekilde kullanır. Kısıtlı bellek alanına sahip mobil uygulamalar veya gömülü sistemler geliştirirken, en az bellek tüketen veri yapısını seçmek, uygulamamızın sorunsuz çalışmasını sağlar.

 

3. Algoritmaların Temeli

Verimli veri yapıları, verimli algoritmaların anahtarıdır. Güçlü ve optimize algoritmalar oluşturmak için veri yapılarının nasıl çalıştığını bilmek şarttır. Problemimize en uygun veri yapısını seçtiğimizde, çözümümüz de doğal olarak daha etkili hale gelir.

 

Veri Yapıları

Veri yapıları temelde iki ana gruba ayrılır:

1. Basit (Temel) Veri Yapıları

Bu yapılar, verileri doğrudan ve ardışık bir şekilde depolar. Genellikle programlama dillerinin yerleşik (built-in) veri tiplerinin bir araya gelmesiyle oluşurlar.

  • Diziler (Arrays): Aynı türden verilerin ardışık bellek konumlarında saklandığı en temel veri yapısıdır.

  • Yapılar (Structs): Farklı türdeki verileri tek bir birim altında gruplamak için kullanılır.

  • İşaretçiler (Pointers): Bellekteki verilerin adreslerini tutan özel bir veri tipidir.

 

2. Karmaşık (Soyut) Veri Yapıları

Bu yapılar, verileri belirli bir mantık ve ilişki içinde organize eder. Verilerin nasıl depolandığından ziyade, verilerle hangi işlemlerin yapılabileceğine odaklanırlar. Bu kategoride de kendi içinde ikiye ayrım yapılır:

a) Doğrusal (Linear) Veri Yapıları: Veri öğelerinin ardışık bir sıra izlediği yapılardır.

  • Bağlı Listeler (Linked Lists): Her bir veri elemanının (node), bir sonraki elemanın adresini içerdiği yapılardır.

  • Yığınlar (Stacks): "Son giren ilk çıkar" (LIFO) prensibine göre çalışan veri yapısıdır.

  • Kuyruklar (Queues): "İlk giren ilk çıkar" (FIFO) prensibine göre çalışan veri yapısıdır.

 

b) Doğrusal Olmayan (Non-Linear) Veri Yapıları: Veri öğelerinin hiyerarşik veya rastgele bir şekilde ilişkili olduğu yapılardır.

  • Ağaçlar (Trees): Hiyerarşik bir yapıda verileri organize eder. En üstteki elemana kök (root) denir ve her elemanın alt düğümleri (child nodes) olabilir.

  • Çizgeler (Graphs): Düğümler (nodes) ve bu düğümleri birbirine bağlayan kenarlardan (edges) oluşan bir yapıdır.

  • Hash Tabloları (Hash Tables): Verileri anahtar-değer (key-value) çiftleri olarak depolayan ve çok hızlı arama, ekleme ve silme işlemleri sağlayan bir yapıdır.

 

Veri Yapılarına Günlük Hayattan Örnekler

Veri yapıları soyut bir kavram gibi görünse de, günlük hayatımızda her yerde karşımıza çıkar.

  • Diziler (Arrays): Tıpkı bir kitaplığın rafındaki yan yana duran kitaplar gibidir. Her kitabın bir numarası (index) vardır ve aradığınız kitaba doğrudan numarasıyla ulaşabilirsiniz.

  •  
  • Yığınlar (Stacks): Üst üste dizilmiş tabakları düşünün. Yeni tabağı en üste koyar (ekle) ve almanız gerektiğinde en üstteki tabağı alırsınız (çıkar). Bu yapıya LIFO (Last-In, First-Out) denir.

  •  
  • Kuyruklar (Queues): Otobüs durağındaki bir bekleme sırası gibi. Sırada ilk duran kişi otobüse ilk biner. Bu yapıya FIFO (First-In, First-Out) denir.

 

Bu blog serimizde, bu ve daha pek çok veri yapısını detaylıca ele alacağız. Bir sonraki yazımızda, en temel ve en yaygın veri yapısı olan dizilere yakından bakacağız. Takipte kalın!

 

Sonraki bölüm olan “Veri Yapıları 2” yazısını okumak için tıklayın.

Etiketler

Data Structures Veri Yapıları Programlama