Veri Yapıları Nedir?
Veri yapıları, verileri düzenlemek işlemek ve depolamak için özel formatlardır. Verileri belirli amaçlara uyacak şekilde düzenlemek için oluşturulmuş birkaç temel ve gelişmiş veri yapı türü vardır. Veri yapıları, makinelerin daha iyi anlayabilmesi ve bir sonuç çıkarabilmesi için bilginin organizasyonunu sağlar. Programlada kurduğumuz algoritmaların kalitesi veri yapısı tasarımına bağlıdır.
Veri Yapıları Neden Önemlidir?
Bilgisayar proglama dillerinde olan tamsayı veya karakter gibi tipik veri türleri, veri işleme ve kullanımı için genellikle yetersizdir. Bilgiyi işleyen ve üreten programlar veri işlemeyi basitleştirmek için verilerin nasıl düzenlenmesi gerektiğini anlamalıdır. Veri yapıları verileri mantıklı bir şekilde bir araya getirip düzenleyerek verilerin kullanımı kolaylaştırır. Yani aslında veri yapıları, mevcut veriyi düzenleme şeklini tanımlayan yasallaşmış bir model görevi yapar.
Programlar için uygun veri yapısını seçmek, veri yapılarını kullanmak kadar önemlidir. Uygun olmayan veri yapısını kullanmak programın çalışma hızını düşürmenin yanı sıra, algoritmanın bozulmasına ve dolayısıyla hata veren kodlara neden olabilir. Bu durumların yaşanmaması ve doğru veri yapısını seçmek için göz ardı edilmemesi gereken belirli kriterler vardır.
Bu kriterler sırasıyla:
1. Ne tür bilgilerin saklanacağını belirlemek.
2. Bu bilgilerin nasıl kullanılacağını belirlemek.
3. Veriler oluşturulduktan sonra bu verilerin nerede saklanacağını belirlemek.
4. Verileri düzenlemenin en iyi yolunu belirlemek.
5. Bellek depolama rezervasyon yönetiminin hangi yönelerinin dikkate alınması gerektiğini belirlemek.
Veri Yapıları Nerelerde Kullanılır?
Veri yapıları, algoritma tasarımında kritik bir rol oynar. Genellikle, soyut veri türlerini somutlaştırmak için kullanılır. Veri yapılarının nerelerde kullanıldığına dair bazı örnekler:
- -Veri Depolama
- -Kaynakları ve Hizmetleri Yönetme
- -Veri Değişimi
- -Sıralama
- -Endeksleme
- -Arama
- -Ölçeklendirme
Veri Yapılarının Özellikleri Nelerdir?
Veri yapıları özelliklerine göre sınıflandırılır;
Doğrusal ve Doğrusal Olmayan Veri Yapıları: Bu özellik verilerin bir dizi gibi sıralı mı yoksa düzensiz mı kaydedileceğini açıklar.
Homojen ve Heterojen Veri yapıları: Bu özellik belirli programdaki bütün verilerin aynı türde olup olmadığını açıklar.
Statik ve Dinamik Veri Yapıları: Bu özellik veri yapılarının nasıl derlediğini açıklar. Statik veri yapıları sabit boyut ve bellek konumuna sahipken dinamik veri yapıları duruma bağlı olarak daralabilen veya genişleyebilen boyut ve bellek konumuna sahiptir.
Veri Yapısı Türleri Nelerdir?
Herhangi bir durumda kullanılacak veri yapısının türü, gerekli olacak işlemlere göre değişkenlik gösterir. Bazı veri yapısı türleri;
-> Array:
Array’ler, bitişik bellek konumlarında ayrı türdeki verileri birlikte depolar. Her verinin konumu bir indeksle kolayca bulunabilir. Biziler sabit veya esnek uzunlukta olabilir.
-> Stack:
Stack’ler, işlemlerin doğrusal sırada uygulandığı bir veri seti depolar. Bu sıralamada son giren ilk çıkar (LIFO) veya ilk giren ilk çıkar (FIFO) şeklindedir.
-> Queue:
Queue’lar, aynı yığınlar gibi veri seti depolar, ancak işlem sırası ilk giren ilk çıkar şeklindedir.
-> Linked List:
Linked List’lerdeki her veri veya düğüm, listedeki sonraki veriye bağlantı bilgisini içerir.
-> Tree:
Tree’ler, veri setlerini soyut ve hiyerarşik bir şekilde saklar. Her düğüm alt düğümlere ya da alt düğümlere bağlı anahtar değerlerle ilişkilendirilir. Ağaçlarda, tüm düğümlerin atası tek bir düğümdür.
-> Heap:
Heap’ler, her üst düğümün ilişkili anahtar değerinin, alt verilerin anahtar değerlerinden herhangi birinin anahtar değerinden büyük veya ona eşit olduğu ağaç tabanlı yapılardır.
-> Graph:
Graph’lar, veri setlerini doğrusal olmayan şekilde saklar. Bunlar bilgisayar ağları gibi gerçek dünya sistemlerini temsil etmek için kullanılır.
-> Trie:
Trie’ler, verileri görsel bir grafikte düzenlenebilen veri öğeleri olarak depolayan bir veri yapısıdır.
-> Hash Table:
Hash table key-value prensibine dayanan bir array kümesidir. Key olarak çağırdığımız elemananın değerini value yansıtır.