Veri Yapıları
VERİ YAPILARI
BAĞLI LİSTE
Bağlı Listeler esnekliklerine bağlı olarak çeşitli yapılarda
kullanılabilmektedir. Temelde 3 çeşit Bağlı Liste yapısı kullanılmaktadır.
Bağlı
Liste Çeşitleri Nedir?
1. Tek Yönlü Bağlı Liste (Singly Linked
List)
2. Dairesel Bağlı Liste (Circular Linked
List)
3. Çift Yönlü
Bağlı Liste (Doubly Linked List)
Tek
Yönlü Bağlı Listeler
Veri Yapıları
dersinde ilk olarak Singly Linken List olarak
da bilinen, Tek Yönlü Bağlı listeler konusu
anlatılır. Bu tipteki bağlı listelerde her düğüm sadece kendisinden
sonraki düğümü işaret eder.
Dairesel
Bağlı Liste
Circular Linked
List yapısı olarak da bilinir. Bu yapı da aynı tek yönlü bağlı listelere
benzer. Tek fark, son düğüm NULL değerini değil, tam aksine ilk düğümü
gösterir. Bu yüzden Dairesel Bağlı Liste adını
almıştır.
Çift
Yönlü Bağlı Liste
Doubly Linked List
adı da verilen Çift yönlü bağlı
liste yapısı ilk başta sizleri zorlayabilir. Ancak aslında bu da
çok kolay bir yapıdır. Normal Linked List yapısında her düğüm sonraki düğümü
işaret ederken bu yapıda bir değil, iki pointer kullanılır. Pointerlardan
birisi sonraki düğümü, birisi de önceki düğümü işaret eder.
YIĞIN YAPILARI
Bilgisayar biliminde yığın son
giren ilk çıkar prensibine sahip veri yapısıdır. Günümüz bilgisayar
dizgelerinin tümünde fazlaca kullanılır. Karakteristik özelliği Push ve Pop
işlemleridir. Yığına veri atılması işlemine push işlemi adı verir. Push
işlemiyle birlikte daha önceden yığının en üstünde bulunan veri sanal olarak
gizlenmiş olur. Push işleminden önce eğer yığın boşsa yığın kullanımına hazır
hale getirilir. Yığına son giren verinin yığından alınmasına Pop işlemi adı
verilir. Pop işlemi sonucunda yığından alınan veri Pop işlemini çağıran kod
parçasına işlem sonucunda alınan veriyi döndürür.
KUYRUK YAPILARI
Kuyruk veri yapısı stack veri
yapısına çok benzer. Kuyruk veri yapısında da veri ekleme ve kuyruktan veri
çıkarma şeklinde iki tane işlem tanımlıdır. Yığınların tersine FIFO prensibine
göre çalışırlar ve ara elemanlara erişim doğrudan yapılamaz. Veri ekleme stack
’teki gibi listenin sonuna eklenir. Fakat veri çıkarılacağı zaman listenin son
elemanı değil ilk elemanı çıkarılır. Bu ise, kuyruk veri yapısının ilk giren
ilk çıkar tarzı bir veri yapısı olduğu anlamına gelir. Kuyruk yapısı bilgisayar
alanında; ağ, işletim sistemleri, istatiksel hesaplamalar, simülasyon ve çoklu
ortam uygulamalarında yaygın olarak kullanılmaktadır. Kuyruk veri yapısı bir
sabit dizi olarak gösterilebilir veya bir bağlı olarak tanımlanabilir. Kuyruk
yapısında da yığın yapısında olduğu gibi eleman ekleme ve eleman çıkarma olmak
üzere iki işlem söz konusudur. Kuyruğa eleman eklemek için kuyruğun dolu
olmaması gerekir ve ilk olarak kuyruğun dolu olup olmadığı kontrol edilir ve
boş yer varsa eleman eklenir; boş yer yoksa ekleme işlemi başarısız olur.
Kuyruğa eleman ekleme işlemi ENQUEUE olarak adlandırılır. Kuyruktan eleman
çıkarmak için de kuyruğun boş olmaması gerekir. Bu çıkarma işlemi için de ilk
olarak kuyruğun boş olup olmadığı kontrol edilir ve kuyruk boş değilse, eleman
çıkarma işlemi gerçekleşir. Eğer boşsa eleman çıkarma işlemi başarısız olur.
Kuyruktan eleman çıkarma işlemi DEQUEUE olarak bilinir.
ÖZYİNELEMELİ FONKSİYONLAR
Bir fonksiyonun kendisini
çağırarak çözüme gitmesine özyineleme, böyle çalışan fonksiyonlara da
özyinelemeli fonksiyonlar denilir. Özyineleme, iterasyon yerine geçebilecek çok
güçlü bir programlama tekniğidir. Özyinelemeli algoritmalarda, tekrarlar fonksiyonun
kendi kendisini kopyalayarak çağırması ile elde edilir. Bu kopyalar işlerini
bitirdikçe kaybolur. Bir problemi özyineleme ile çözmek için problem iki ana
parçaya ayrılır.
1. Cevabı kesin
olarak bildiğimiz kesin durum
2. Cevabı
bilinmeyen ancak cevabı yine problemin kendisi kullanılarak bulunabilecek
durum.
SIRALAMA
ALGORİTMALARI
Sıralama algoritması, bilgisayar bilimlerinde ya da
matematikte kullanılan, verile bir listenin elemanlarını belirli bir sıraya
koyan algoritmadır. En çok kullanılan sıralama türleri, sayı büyüklüğüne göre
sıralama ve alfabetik sıralamadır. Sıralama işleminin verimli yapılması, arama
ve birleştirme algoritmaları gibi çalışması için sıralanmış dizilere gereksinim
duyan algoritmaların başarımının yüksek olması için önemlidir. Sıralama
algoritmaları bilgisayarlarda tutulan verilerin düzenlenmesini ve insan
kullanıcı tarafından daha rahat algılanmasını da sağlar. Sıralama
algoritmaları, tanımı çok yalın olmasına karşın çözümü çok karmaşık olan bir
işi gerçekleştirdikleri için, üzerinde en fazla araştırma yapılan bilgisayar
bilimi konularından biridir. Çoğu kişi sıralama sorununu çözülmüş bir sorun
olarak görse de, yeni sıralama algoritmaları üzerinde araştırmalar sürmektedir.
Örneğin kütüphane sıralaması ilk olarak 2004 yılında ortaya atılmıştır.
Sıralama algoritmaları, sayılarının çok olması ve değişik yaklaşımlar sunmaları
nedeniyle özellikle giriş düzeyindeki bilgisayar bilimleri derslerinde büyük O
gösterimi ve veri yapıları gibi temel algoritma kavramlarının açıklanması
amacıyla yaygın biçimde kullanılırlar.
ARAMA
ALGORİTMALARI, SIRALI ARAMA, İKİLİ ARAMA
ARAMA ALGORİTMASI
Arama algoritması, bilgisayar biliminde seçili
özelliklere göre istenilen bilgileri bulan algoritmalarıdır. Listeler, metinler
ve şekiller üzerinde çalışırlar.
İKİLİ ARAMA
İkili arama, sıralı bir dizide, belirli değerin
bulunmasına yönelik bir algoritmadır. Bu teknikteki her bir adımda, aranan
değerin, dizinin orta değerine eşit olup olmadığı kontrol edilir. Eşit olmaması
durumunda aranan değerin orta değer tarafından ikiye ayrılan kısımlardan
hangisinde olduğu kontrol edilir, aranan değeri içeren kısım bir sonraki adımda
arama yapılacak dizi olur ve bu sayede arama yapılan listedeki eleman sayısı
her adımda yarıya indirilmiş olur.
HASHİNG TEKNİĞİ VE
UYGULAMASI
Hash, herhangi bir metnin şifrelenerek okunamaz veya
önceden tahmin edilemez hale getirilmesi algoritması ve işlemidir. Hash sistemi
daima bir algoritmaya bağlı olarak çalışır ve günümüzde Hash’ i kullanmak için
MD2, MD5, SHA ve SHA-1 benzeri algoritmalardan faydalanılır. Hash ’i yalnızca
tek bir başlık altında incelememiz ne yazık ki pes olası değil. Çünkü hash’i
günlük yaşantımızda sadece güvenlik alanında ve şifreli metinler oluşturmak
için kullanmıyoruz. Bu algoritmaları kullanarak Hash ile metinleri şifrelemenin
birçok yerdeki esas amacı verilerin güvenli tutulması olsa da karakter
sayılarını eşitlemek için de aynı şekilde bir Hash algoritmasından
faydalanabiliriz. Hash’in kullanıldığı bir diğer yaygın alan ise indirme
işlemleridir. Özellikle işletim sistemi indirmelerinde size çoğu zaman açıklama
kutusu içerisinde bekleyen bir Hash dizesi vardır. İndirme işlemi bittiğinde elde edilen Hash
ile sitede verilen Hash dizelerinin aynı karakterlerden oluşması halinde indirme
başarıyla tamamlamış demektir. Özellikle işletim sistemlerinin kurulum ISO
kalıplarında eksik dosyanın yer alması kuruluma engel olacağı için
kullanıcılara daima Hash bilgisi sunulur.
Yorumlar
Yorum Gönder