
Basit Veri Yapıları
Herkese merhabalar, bu yazımda bilgisayar bilimlerinde sıkça kullanılan veri yapısı modellerini bahsedeceğim.
Birazdan anlatacağım modellerin önce nelerde kullanıldığından örnekler vererek açıklayayım. Bilgisayar bilimlerinde tüm veriler belirli bir organizasyona ihtiyaç duyar. Ürettiğimiz yazılımlara düşen kullanıcıların verileri belirli bir düzen içerisinde işleriz. Örnek vermek gerekirse, hastane otomasyon sisteminde yer alan rendavu sistemi sayesinde hastaları sıra ile muayene yapılmaktadır(kuyruk veri yapısı) bunun yanında yaşlılara öncelik özelliği eklediğimizde farklı bir veri yapısı(öncelikli kuyruk) kullanmalıyız. Bu gibi günlük sorunların üstesinde gelmek için çeşitli algoritmalara veri yapısı demişler aslında olay bu kadar basit.
Veri Tutuluş Şekli
Temelde bellekte(ram) 2 tür veri tutuluş şekli vardır.Statik ve Dinamik. Statik bildiğimiz dizilerdir. Bellekte belirli bir yer işgal edip çok hızlı çalışan veri yapıları. Bir diğer şekil ise dinamik yani biz veri girdiğimizde büyüyen veri yapısı. Buna en güzel örnek bağlı listedir. Bağlı listeyi anlayabilmek için öncelikle nesne yönelimli programlamada referans kavramını, fonksiyonel programlama dillerinde de kullanılan pointer yapısının bilinmesi gereklidir. Şöyle açıklamak gerekirse java da tutmak istediğimiz değeri veya değerleri bir sınıf içerisinde tanımlıyoruz. Şimdilik sadece bir sayı tutacağımızı varsayalım.
Java
class deneme {
int sayi;
deneme ileri;
}
C
struct deneme {
int sayi;
deneme *ileri;
};
Sınıfımızın ismi deneme bu sınıfın içerinde bir tane int türünden sayi değişkeni bir tane de deneme türünden ileri adında referansı bulunmaktadır. Aşağıda ki görselde de görüldüğü üzere kutular sayi değişkenini oklar ise ileri referansını işaretini temsil etmektedir. Bu sayede her deneme sınıfını new yaptığımızda listeye yeni bir eleman eklemiş olacağız.
Stack(Yığın)
İlk giren son çıkar mantığı ile çalışır. Masanın üzerinde ki kitapları üst üste dizdiğimizde alt taraflarda ki kitabı almak istediğimiz de üstekini çıkarmak zorunda kaldığımız gibi.

Queue(Kuyruk)
İlk giren ilk çıkar mantığı ile çalışır. Kuyrukta sırada bekleyen müşteriler örnek verilebilir.

Ağaçlar
Verilerin birbirine sanki bir ağaç yapısı oluşturuyormuş gibi sanal olarak bağlanmasıyla elde edilen hiyerarşik yapıya sahip veri yapısıdır. Yukarıda bahsedilen bağlı listeye bir tane daha referans ekleyerek binary tree elde edilebilir. Görünümü ters ağaç şeklidir. Günlük hayatta kullandığımız soy ağacının bellekte kullanımı olarak hayal edebiliriz
Yığın
İkili ağaç yapısına görünüş itibari ile benzemekle birlikte yaptıkları iş farklıdır. Eklenen her veriyi ağaçta ki en son sıraya ekler, bunu yaparken de her zaman parent nodenin kendisinden büyük olmasına dikkat eder. Eğer eklenen değer üst node’den büyük ise heapify algoritması çalıştırılarak heap düzenli hale getirilir.

grafik
Yaşadığımız dünyayı bilgisayara anlatmak için kullandığımız en sık veri yapısıdır. Graph’ta bulunan düğümler varlıklar ve varlıklar arasında ki ilişkiyi tanımlayan kenarlar tanımlanır. Sosyal medyada, karar yapılarında, en kısa yol problemlerinde sıkça kullanılırlar.

Bu konular bilgisayar bilimlerinin temelini oluşturduğundan öğrenilmesi bir çok kişi tarafından tavsiye edilmiştir. Biz YBS’ciler olarak hem algoritma yeteneğimizi geliştirmek hemde bilgisayar bilimlerine giriş yapmak için bunları hem teorik olarak öğrenmeli hem de herhangi bir programlama dilinde kodlayarak hayata geçirmeliyiz.



