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

Bu blogdaki popüler yayınlar

VLSI Devre Tasarımı

Yapay Sinir Ağlarına Giriş

İnsan Bilgisayar Etkileşimi