Veri Yapıları Nedir?

Ufuk Taş
4 min readJun 30, 2019

Veri yapılarına girmeden önce, algoritmanın ve verinin ne olduğunu belirtmemiz gerekir. Algoritma, bir problemi çözmek için izlenmesi gereken adımların tasarımıdır. Veri, algoritmada kullanılan bilgiyi taşıyan parçacıklardır.

Şimdi bu bilgilere dayanarak veri yapılarına giriş yapabiliriz.

Veri yapıları hakkında bahsederken, ilk önce veri kaydetmeyi ve işlemeyi düşünmeliyiz. Veriler algoritma tarafından kullanılmadan önce veriler ve verileri işledikten sonra saklanmalıdır.

Peki, bu depolama ve işleme yapıları bizim için neden önemli?

Bilgisayarlar şu anda saniyede milyonlarca, hatta milyarlarca işlemi gerçekleştiriyor ve bu da birçok veri girişi ve çıktısına neden oluyor. Programlama sırasında daha etkin ve daha verimli işlemler yapabilmemiz için bu verilerin kontrolünü elimizde tutmamız ve düzenli olarak bellekte saklamamız gerekiyor. Verileri hafızaya kaydederken bazı veri yapısı modelleri mevcuttur.

Bu modellere bir göz atalım.

— Bağlantılı Veri Yapısı

— Yığın Veri Yapısı

— Kuyruk Veri Yapısı

— Öncelik Kuyruğu Veri Yapısı

— Ağaç veri yapısı

— Karma(Hash olarak bilinmekte)

— Grafikler

Bağlantılı Veri Yapıları

Bağlantılı listelerde düğüm adı verilen noktalar vardır. Bu noktalar, algoritmalara giren verileri veya algoritmalardan çıkan verileri depolar. Bir liste biçiminde olan bu veri yapısına yeni bir veri eklendiğinde, bu düğümden yeni bir düğüm oluşturulur ve listeye bağlanır ve veriler bu düğümde depolanır. Veri çıkışı olacaksa, düğüm listeden çıkarılır, diğer düğümler listedeki diğer düğümlerle bağlanırlar. Üç farklı türden bağlantılı liste yapısı vardır.

Tek yönlü bağlantılı liste yapısı

Bu liste yapısında iki değişken vardır. Bu değişkenlerden biri gelen verinin değerini korumak için ayrılmıştır. Diğer değişken sonraki verinin adresini tutar.

https://www.hackerearth.com/practice/data-structures/linked-list/singly-linked-list/tutorial/

İki yönlü bağlantılı liste yapısı

Tek yönlü bağlantılı liste yapısına çok benzer. İki liste yapısı arasındaki tek fark değişkenlerin sayısıdır. Bu liste yapısında 3 değişken vardır. Bu değişkenlerden biri verinin değerini, diğer değişken verinin önceki düğüm adresini, son değişken verinin bir sonraki düğümünün adresini tutar.

https://neurabytes.com/what-is-a-doubly-linkedlist/

Dairesel bağlantılı liste yapısı

Bu liste yapısı ile diğerleri arasındaki fark, bu liste yapısındaki son düğümün boş bir adres göstermek yerine ilk düğümün adresini göstermesidir.

https://www.geeksforgeeks.org/doubly-circular-linked-list-set-2-deletion/

Yığın Veri Yapıları

Yığın veri yapısı en kolay veri yapısı türüdür. Çünkü yığın veri yapısı her şeyi bir çanta yapısı biçiminde koyabileceğimiz yapıdır. Biraz daha derine gidersek, kuyruk yapısına benzeyen bir yapı var ve bu yapı ile, bir algoritma da işlemin sonunda üretilen veriler yığın yapısının en üstüne eklenir. Bu liste yapısının dezavantajı şudur: Son giren ilk çıkar.

Peki, bu durumun dezavantajı nedir?

Bir algoritma işlemi sırasında orta sıralarda bulunan verilerden birinin kullanılması gerekiyorsa, o zaman bu veriye kadar olan veriler yığın yapısından çıkar ve gerekli veri algoritmaya aktarılır, ardından çıkan veriler tekrar yığına aktarılır. Algoritma, veri çıkarken bekler ve bu işlem zaman alır.

https://i.stack.imgur.com/bOga5.png

Kuyruk Veri Yapıları

Kuyruk veri yapısı yığın veri yapısına çok benzer. Ancak aralarında önemli bir fark var. Bu fark: Yığın yapısında, son girişin ilk çıktı olduğu bir işlem varken, kuyruk veri yapısında, ilk girişin ilk çıkan olduğu bir işlem de vardır.

Bir yığında tek bir çıkış noktası vardır, son giren ilk çıkar, diğer kuyruk yapısında, kuyruk yapısının girişinde ve çıkışında olmak üzere iki çıkış bulunur. Dolayısıyla son girenin ilk çıkmasına gerek kalmadan işlemler gerçekleşir. Kısaca, bir bilet kuyruğu ya da bankamatik kuyruğu bu sisteme bir örnek olarak verilebilir.

https://www.tutorialspoint.com/data_structures_algorithms/dsa_queue.htm

Öncelik Kuyruğu Veri Yapısı

Bu kuyruk yapısının normal kuyruk yapılarından küçük bir farkı vardır. Bir ilk girenin ilk çıkan olduğu normal bir kuyruk yapısını göz önüne alarak; Öncelikli kuyruk yapısında şu olay vardır: Veriler, kuyruk yapısında olduğu gibi ilk girenin ilk çıkabileceği şekilde sıralanırlar. Burada önem değeri devreye girer. Her verinin bir önem değeri vardır.

Bu önem değeri, bir algoritmanın çalışması sırasında bu verilere olan ihtiyaç oranını belirler. Bu kuyruk yapısında da sıralama ise önem değerine göredir. Diyelim ki kuyruk yapısında veriler var. Bu verilerden bir tanesini kullanacak olan algoritmanın işlenmesi gerekiyor. Ancak veri kuyruk yapısındaki son veridir. Bu durumda, veriler kuyruk yapısındaki önem derecesine göre en üst konumlara yerleştirilir. Bu sıralamaya göre de bu veri kuyruk yapısında en üstte yer alır.

Bir sonraki yazımda veri yapılarının ikinci kısmı ile devam edeceğim.

https://medium.com/@uufukttas/veri-yap%C4%B1lar%C4%B1-nedir-2-22d38e47239

--

--