Veri Yapıları etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Veri Yapıları etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

22 Kasım 2019 Cuma

C Programlama Yığın ve Kuyruk Örnek

Bir önceki dersimizde yığın hakkında bilgi vermiştik yığın hakkında bilginiz yok ise buraya tıklayarak yığın dersimize gidebilirsiniz.

Bu dersimizde kuyruğu anlatarak kod örneğimizi vereceğiz.


Kuyruk veri yapısı Veri Yapıları arasında en öne çıkanlardan bir tanesidir. Mantalite olarak ilk giren elemanın ilk çıkması gözetilir. Yani First In First Out yapısı mevcuttur.
Kuyruk veri yapısını gerçek hayattaki kuyruk gibi düşünebilirsiniz, kuyruğun en önündeyseniz ilk sizin işiniz biter, kuyruğun ne kadar gerisindeyseniz işiniz o kadar gecikecektir. ATM kuyrukları, ekmek kuyrukları vs…

20 Kasım 2019 Çarşamba

C Programlama Yığın ile Parantez Kontrolü

Kullanıcının girdiği bir işemde parantezlerin '(' ')' doğru şekilde yazılıp yazılmadığı yığın kontrolü ile yapılacaktır...


Bilginin geliş sırasına göre, en son gelen elemana ilk erişilen liste yapısına yığın (stack) denir. Verilere yalnız bir uçtan erişim sağlanır.
Bu erişimde Last-In-First-Out (LIFO) prensibi vardır. Yani son giren eleman, ilk çıkar. Örneğin üst üste dizilen kitapları, yalnızca en üsttekine erişecek şekilde düşünebiliriz.

16 Kasım 2019 Cumartesi

C Programlama Çift Yönlü Bağlı Liste



Bağlı Listeler  konusunu bir önceki dersimizde işledik.Konu hakkında bilgi sahibi olmak için linke tıklayabilirsiniz.Peki çift yönlü bağlı liste nedir ?


Çift Yönlü Bağlı Liste

İki adet bağlantı bilgisi tutan bağlı listeler iki yönlü bağlantılı listeler olarak ifade edilir. Bağlantılardan bir tanesi önündeki düğümü işaret ederken, diğeri sonrasındaki düğümü işaret eder.

15 Kasım 2019 Cuma

C Programlama Bağlı Listeler

Bağlı liste herhangi bir tipten node’ların (düğümlerin) yine kendi tiplerinden düğümlere işaret etmesi (point) ile oluşan zincire verilen isimdir. Buna göre her düğümde kendi tipinden bir pointer olacak ve bu pointerlar ile düğümler birbirine aşağıdaki şekilde bağlanacaktır.





Linked List’in avantajı, hafızayı dinamik olarak kullanmasıdır. Buna göre hafızadan silinen bir bilgi için hafıza alanı boşaltılacak veya yeni eklenen bir bilgi için sadece o bilgiyi tutmaya yetecek kadar hafıza alanı ayrılacaktır.
Yukarıdaki figürde görülen bağlı listeye çok benzeyen ve yine çok kullanılan bir bağlı liste uygulaması da çift bağlı liste (doubly linked list) uygulamasıdır.

Buna göre her düğüm, hem kendinden öncekine hem de kendinden sonrakine bağlanır, bu sayede liste üzerinde ileri ve geri ilerlemek mümkündür.
Listelerin üzerinde işlem yapılırken, dolaşıcı (iterator) şeklinde bir gösterici tanımlanır. Bu dolaşıcı veri aranması, ekleme veya silme gibi işlemler sırasında listenin ilgili elemanına kadar gidilmesini sağlar. Listenin ilgili elemanına gidildikten sonra silme veya ekleme gibi işlemler yapılırken göstericilerde (pointers) yapılan değişikliklerin, listeyi etkilememesini sağlar.
Örneğin bir bağlı listeye yeni bir eleman eklenmesi sırasında aşağıdaki adımlar izlenir:
  1. Ekleme işlemini yapılacağı aralıktan önceki düğüme dolaşıcı tarafından gidilir.
  2. Yeni düğüm oluşturularak, sonrasına, dolaşıcının sonrası atanır.
  3. Dolaşıcının sonrasına ise yeni düğüm atanır.
Bağlı listeden eleman silinmesi sırasında, listede silinecek olan elemandan önceki düğüme kadar dolaşıcı ile gidilir. Dolaşıcının sonrasına, sonrasının sonrası atanır. Bu sayede ilk başta dolaşıcının sonrasında olan düğüm listeden kaldırılmış ve ulaşılamaz hale gelmiş olur. Ardından bu eleman istenirse hafızadan da kaldırılır.
Bağlı listelerin nesne yönelimli programlama dillerinde pointer tipi bulunmamasından dolayı kodlanması biraz farklıdır. Bilindiği gibi C++ gibi melez (hem C hem de nesne yönelimli programlamayı destekler) diller dışında JAVA, C# gibi dillerde gösterici (pointer) bulunmaz. Bunun yerine nesne göstericisi (object referrer) bulunur. Bu değişken tipleri esas olarak bir sınıf(Class)‘dan türetilmiş bir nesneyi(object) gösterebilen değişkenlerdir. Bu değişkenlerin aslında birer göstericiden farkı yoktur.

13 Kasım 2019 Çarşamba

C Programlama Ağaç Yapısı








2 Kasım 2019 Cumartesi

Veri Yapıları Sıralama Algoritmaları ve Kullanımları

Bilgisayar bilimlerinde verilmiş olan bir grup sayının küçükten büyüğe (veya tersi) sıralanması işlemini yapan algoritmalara verilen isimdir. Örneğin aşağıdaki düzensiz sayıları ele alalım:
5 9 2 3 7 11 -4 6