Stack and Queues– Yığıtlar ve Kuyruklar

  Bu yazımızda da yine çok önemli iki yapıdan söz edeceğiz.Stack ve Queues!(Yığıtlar ve kuyruklar demek pek hoşuma gitmedi.İngilizcesi daha aşina olduğum halleri. ) Peki nedir bu stack yapısı? Stack , veri ekleme ve çıkarma işlemlerinin en üstten yapıldığı bir veri yapısıdır.Yani veri ekleyeceğimiz zaman stack yapısının en üstüne ekleniyor.Her veri bir öncekinin üstüne ekleniyor.Veriyi çıkarma işleminde ise en üstteki veriyi alıyoruz.Bu vesileyle de bir altındaki en üste çıkmış oluyor.Aslında bunu güzel bir örnekle betimleyebiliriz.Bir tabanca düşünün.Şarjörüne mermi doldurduğunuz zaman en son koyduğunuz mermi silahtan ilk çıkacak olandır.Yani stack yapısında da dendiği gibi “Son giren ilk çıkar”. Resimde de görüldüğü üzere stack yapısı için iki adet fonksiyondan bahsedebiliriz.Push ve Pop. Push anlayacağınız üzere stack yapısının en üstüne veri eklemeyi ifade ediyor.Pop ise üstteki... Devamını oku..

Trees – Ağaçlar

  Ağaçlar bilgisayar bilimlerinde bir çok farklı alanda kullanılmaktadır.İşletim sistemleri,grafiksel işlemler,veritabanı sistemleri gibi alanlar buna örnektir.Doğadaki ağaçlar ile farkı ise burada kökün en tepede olmasıdır. Bağlı listeler (Linked Lists), yığıtlar(stack) ve kuyruklar(queues) doğrusal veri yapılarıdır.Ağaçlar(Trees) ise doğrusal olmayan iki boyutlu yapılardır.Ağaçlar en tepede olmak üzere bir adet kök(root) ve onun altında devam eden düğümlerden oluşur. Şekilde de görüldüğü üzere A düğümümüz kök(root) düğümdür.Onun sağ ve solundan itibaren ise diğer düğümler devam etmektedir.   Ağaçlardan bahsederken 3 özellik sayabiliriz. Ağaçların yapısındaki gruplandırılma sayesinde üstten aşağıya doğru ihtiyaçlarımıza göre verileri azaltabiliyoruz. Örneğin; iki adet düğümümüz var ve bunların alt düğümlerinde ise aynı veri var.Bu durumda bir tanesindeki veriyi... Devamını oku..

Lists – Listeler

  Dizilerde, verilerimizin bellekteki  sıralı hali tanımlanma esnasında belirlenir. Ardışık dizi elemanlarımız aynı zamanda bellekte de ardışık bir şekilde yer tutar.Bu nedenle silme ve ekleme gibi işlemlerin, dizi elemanlarının yerlerinin kaydırılmasına sebep olacağına diziler  isimli yazımda değinmiştim. Bu tür bir sorunla karşılaşmamak için “listeler” adında bir veri yapısına sahibiz.Listeler, farklı bellek bölgelerinde bulunan verilerin adres bağlantılarıyla birbirine bağlandığı veri yapılarıdır.Bu yapıda her bir eleman bir değer ve işaretçiye(pointer) sahiptir.   Resimde de gördüğünüz gibi her bir verimize ait işaretçi diğer verinin değerine bağlıdır. Bu resimdeki her veriyi bellekte dağınık yapıda hayal edelim.Oklar(işaretçi) ile de verilerin birbirine bağlandığını görebilirsiniz.Sonuçta veriler fiziksel olarak ayrı konumlardadır.Fakat sıralı bir şekilde algılanıp işlem... Devamını oku..

Arrays – Diziler

  Bu yazıda programlama dillerinde genelde ilk öğrendiğimiz yapı olan dizileri işleyeceğiz. Diziler Nedir? Diziler aynı türden verileri içeren yapılardır.Bir dizi oluşturduğumuzda, bellek kısmında ardışık olarak yer  tutarlar.Bu sayede art arda erişim kolaydır.Yani net bir tanım yapmak gerekirse; Diziler ardışık indis değerlerine sahip aynı tipte verilerin saklandığı veri yapısıdır. Diğer veri yapılarına nazaran dizileri kullanmamızda çeşitli avantajlar bulunmaktadır.Diziler basit bir şekilde ifade edilirler,  bellekte fazla yer kaplamazlar ve kolay anlaşılırlar. Ayrıca indis değeriyle verilere erişimimiz daha kolay olmaktadır.Bu da daha büyük boyutlu dizilerde bizlere büyük kolaylık sağlamaktadır. Diziler birden fazla boyutlu olarak tanımlanabilir.Buna en iyi örnek matrislerin iki boyutlu dizi olarak tanımlanabilmesidir. Fakat ardışıklığın avantajlı olmadığı durumlarda olabilmektedir.Örneğin; Elimizde... Devamını oku..

Veri Yapıları Nedir ve Neden Önemlidir?

big-data1

Veri yapıları kategorisi altında, programlama sürecinde sıklıkla kullandığımız veri yapılarına değineceğim. Programlama ile iç içe olan herkes elbette veri yapılarını kullanıyor.Peki veri yapısı dediğimiz şey nedir? Veri yapısı, gerçek hayattaki verilerimizin bilgisayar ortamında saklanış biçimini ifade etmektedir. Gerçek hayatı soyutlama, biz programcılar için çok büyük önem taşımaktadır. Fakat bu işlem için birden fazla veri yapısı bulunmaktadır. Bu da şu soruyu beraberinde getirmektedir. “Sadece dizi veri yapısını kullanarak çeşitli problemlere çözüm üretebiliyorsam neden farklı yapılara ihtiyaç duyayım? “ İşte burada devreye algoritma konusu giriyor. Biz programcılar her sorunu çözümlemek için bir algoritma tasarlarız ve bu algoritmaların çözüme gidebildiği kadar performansı da bir o kadar önemlidir.Algoritmaların performansını etkileyen en önemli etmenlerden biri  ise veri... Devamını oku..