includeprogram.com
  • info@includeprogram.com
  • Odaklanmak, 1000 iyi fikre hayır diyebilmektir. (Steve Jobs)

Veri Yapıları

Veri Tipleri

Veri Tipleri

Programlamada veri yapıları en önemli unsurlardan birisidir. Program kodlarını yazarken kullanılacak veri yapısının en ideal şekilde belirlenmesi, belleğin ve çalışma biçiminin daha etkin kullanılmasını sağlar. Program içerisinde işlenecek veriler diziler ile tanımlanmış bir veri bloğu içerisinden seçilebileceği gibi, işaretçiler kullanılarak daha etkin şekilde hafızada saklanabilir. Veri yapıları, dizi ve işaretçiler ile yapılmasının yanında, nesneler ile de gerçekleştirilebilir.

Devamını Oku
Veri Yapılarına Giriş

Veri Yapılarına Giriş

Büyük bilgisayar programları yazarken karşılaştığımız en büyük sorun programın hedeflerini tayin etmek değildir. Hatta programı geliştirme aşamasında hangi metotları kullanacağımız hususu da bir problem değildir. Örneğin bir kurumun müdürü “tüm demirbaşlarımızı tutacak, muhasebemizi yapacak kişisel bilgilere erişim sağlayacak ve bunlarla ilgili düzenlemeleri yapabilecek bir programımız olsun” diyebilir. Programları yazan programcı bu işlemlerin pratikte nasıl yapıldığını tespit ederek yine benzer bir yaklaşımla programlamaya geçebilir.

Devamını Oku
Tek Yönlü Liste İşlemleri

Tek Yönlü Liste İşlemleri

Listenin sonuna ekleme yapabilmek için liste sonunu bilmemiz gerekiyor. Listede eleman olduğunu varsayıyoruz. Liste sonunu bulabilmek içinse bu liste elemanları üzerinde tek tek ilerlemek gerektiğinden head'in adresini kaybetmemek için bir değişken oluşturacağız ve head’in adresini bu değişkene atayacağız.

Devamını Oku
Çift Bağlı Doğrusal Liste

Çift Bağlı Doğrusal Liste

Her düğümün data adında verileri tutacağı bir değişkeni ile kendinden önceki ve sonraki düğümlerin adreslerini tutacak olan prev ve next isminde iki adet işaretçisi vardır. Listenin başını gösteren işaretçi head yapı değişkenidir. Şekilde head’in adresi 100’dür ve head’in prev işaretçisi herhangi bir yeri göstermediğinden NULL değer içermektedir.

Devamını Oku
Yığınlar (Stacks)

Yığınlar (Stacks)

Veri yapılarının önemli konularından birisidir. Nesne ekleme ve çıkarmalarının en üstten (top) yapıldığı veri yapısına stack (yığın) adı verilir. Soyut bir veri tipidir. Bazı kaynaklarda yığıt, nadiren çıkın olarak da isimlendirilir. Bir nesne ekleneceği zaman yığının en üstüne konulur. Bir nesne çıkarılacağı zaman da yığının en üstündeki nesne çıkarılır. Bu çıkarılan nesne, yığının elemanlarının içindeki en son eklenen nesnedir.

Devamını Oku
Kuyruklar (Queues)

Kuyruklar (Queues)

Kuyruk (queue) veri yapısı stack veri yapısına çok benzer. Kuyruk veri yapısında da veri ekleme (enqueue) ve kuyruktan veri çıkarma (dequeue) şeklinde iki tane işlem tanımlıdır. Yığınların tersine FIFO (First In First Out) 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.

Devamını Oku
Ağaçlar (Trees)

Ağaçlar (Trees)

Ağaç, verilerin birbirine sanki bir ağaç yapısı oluşturuyormuş gibi sanal olarak bağlanmasıyla elde edilen hiyerarşik yapıya sahip bir veri modelidir; bilgisayar yazılım dünyasında, birçok yerde / uygulamada programcının karşısına çıkar. Ağaç veri yapılarının işletim sistemlerinin dosya sisteminde, oyunların olası hamlelerinde ve şirketlerdeki organizasyon şeması vb. gibi birçok uygulama alanları vardır.

Devamını Oku
İkili Ağaç Yapısı Oluşturmak

İkili Ağaç Yapısı Oluşturmak

İkili bir ağaca veri ekleme işleminde sol çocuğun verisi (data) ebeveyninin verisinden küçük olmalı, sağ çocuğun verisi ise ebeveyninin verisinden büyük ya da eşit olmalıdır. Alttainsertisimli ekleme fonksiyonunun nasıl yazıldığını görüyorsunuz. Fonksiyon, veri eklendikten sonra ağacın kök adresiyle geri dönmektedir.

Devamını Oku
AVL Ağaçları İşlemleri

AVL Ağaçları İşlemleri

Bu veri yapısı, isimlerinin baş harflerinden alıntı yapılarak AVL ağaçları olarak adlandırılmıştır. AVL ağaçları hem dengelidir hem de BST (binary search tree) ikili arama ağacıdır. Normal bir ikili ağacın yüksekliği maksimum n adet düğüm için h = n − 1’dir. AVL yöntemine göre kurulan bir ikili arama ağacında sağ alt ağaç ile sol alt ağaç arasındaki yükseklik farkı en fazla bir olabilir.

Devamını Oku
Öncelikli Kuyruklar (Priority Queues)

Öncelikli Kuyruklar (Priority Queues)

Öncelikli kuyruklar (priority queues), terim anlamıyla gündelik yaşamda sık karşılaştığımız bir olguyu belirler. Bazı durumlarda bir işi öteki işlerin hepsinden önce yapmak zorunda kalabiliriz. Örneğin, bir fatura ödeme veznesinde kuyruğa girenler arasında öncelik sırası önde olanındır. Ancak, bir kavşakta geçiş önceliği cankurtaranındır. Bir hava meydanına iniş sırası bekleyen uçaklar arasında, öncelik sırası acil iniş isteyen uçağındır.

Devamını Oku
Çizgeler (Graphs)

Çizgeler (Graphs)

Çizge kuramının başlangıcı Königsberg’in7 köprüsü (Kaliningrad/Rusya) problemine dayanır. 1736’da Leonhard Euler’ın söz konusu probleme ilişkin kullandığı sembol ve çizimler graf kuramına ilişkin başlangıç olarak kabul edilir. Problem, “Pregel nehri üzerinde iki ada birbirine bir köprü ile, adalardan biri her iki kıyıya ikişer köprü, diğeri de her iki kıyıya birer köprü ile bağlıdır. Her hangi bir kara parçasında başlayan ve her köprüden bir kez geçerek başlangıç noktasına dönülen bir yürüyüş (walking) var mıdır?” sorusunu içeriyordu.

Devamını Oku