Programlamanın Sanatı - Yığın ve Kuyruk

Try Proseoai — it's free
AI SEO Assistant
SEO Link Building
SEO Writing

Programlamanın Sanatı - Yığın ve Kuyruk

İçindekiler 📚

  1. Giriş
  2. Listeler
  3. Yığın (Stack) Veri Yapısı
    • LIFO ve FIFO Kavramları
    • Yığın İşlemleri
      • Ekleme (Push)
      • Çıkarma (Pop)
      • Üst Elemanı Gösterme (Top)
  4. Kuyruk (Queue) Veri Yapısı
    • FIFO İşleyişi
    • Kuyruk İşlemleri
      • Ekleme (Enqueue)
      • Çıkarma (Dequeue)
      • Ön ve Arka Elemanları Gösterme
  5. Yığın ve Kuyruk Veri Yapılarının Kullanımı
  6. Sonuç

Giriş

Kod yazan arkadaşlar, hadi kafeterya, tabaklar ve banka kuyrukları hakkında konuşalım. Zaten listeler adında bir veri yapısı olan bir konteynır yapısıyla tanıştınız. Bu listeleri diziler veya bağlantılı yapı dizileri kullanarak oluşturdunuz. Listeler, bireysel veri elemanlarını gruplamamızı ve gruplandıktan sonra hepsiyle birlikte veya ayrı ayrı veri elemanları ile çalışmamızı sağlar.

Listeler

Listeler, birden çok veri elemanının bir araya getirilmesini sağlayan bir veri yapısıdır. Listeleri oluştururken dizilere veya bağlantılı yapılara dayalı olarak iki yeni konteynır yapısıyla tanışacağız. Yığın (stack) ve Kuyruk (queue) her ikisi de listelerin temelini oluşturur, ancak onları farklı kılan özellikleri erişim gösterir. Hem yığın hem de kuyrukun belirli ve sınırlı veri erişim noktaları vardır, bu noktalar onların nasıl çalıştığını belirleyen noktalardır. Programlarınızda bu konteynır yapıları anlayabilmeniz için tanımanız gereken iki terim vardır: LIFO ve FIFO.

Listeler

Liste, bireysel veri elemanlarını gruplamamızı ve gruplandıktan sonra hepsiyle birlikte veya ayrı ayrı veri elemanları ile çalışmamızı sağlar. Yığın (stack) ve kuyruk (queue), listelere dayalı olarak inşa edilen iki yeni konteynır yapısıdır. Yığın ve kuyruk, listelerin temelini oluşturan özelliklere sahiptir, ancak benzersiz kılan noktaları erişimleri olan noktalardır. Yığın ve kuyruk, LIFO ve FIFO olarak adlandırılan iki kavramla ilişkilidir.

LIFO ve FIFO

  • LIFO: Last In, First Out (Sonde Giren, İlk Çıkar)
  • FIFO: First In, First Out (İlk Giren, İlk Çıkar)

LIFO konteynır yapısı, sadece en üstteki elemana erişim sağlar. En üstteki eleman, listeye en son eklenen elemandır. Diğer tüm elemanlar figüratif olarak görünmezdir. FIFO konteynır yapısı ise ilk ve son iki elemanı gösterir. İlk eleman "ön (front)" ve son eleman "arka (back)" olarak adlandırılır. Listeye yeni elemanlar arka tarafından eklenir ve işlem yapacağımız elemanlar ise listenin ön tarafından kaldırılır. LIFO yapısında olduğu gibi diğer tüm elemanlar görünmezdir.

Yığın (Stack) Veri Yapısı

Yığın (stack), programlama alanında çok basit bir yapıdır. Özellikle üzerinde durmamız gereken temel bir kural vardır: Yalnızca en üstteki eleman görünürdür. Programcı olarak, diğer tüm elemanlara ulaşabileceğinizi bilebildiğiniz halde, ADT'nizi (Abstract Data Type - Soyut Veri Tipi) kullanıcıya ekranın sadece en üst elemanını göstermesini sağlayacak şekilde sunmanızı sağlar. Bu nedenle kullanıcılara, yalnızca yığının üst elemanına dokunmalarını sağlayan işlevleri sağlamanız gerekmektedir.

Yığının temel işlemleri "push", "pop" ve "top" olarak adlandırılır:

  • Push: Yığına yeni bir veri elemanı eklemek için kullanılır. Yığını aşağı itmek anlamına gelir, çünkü bir sonraki eleman onun üstüne gelecek ve onu itecek şekilde eklenir.

  • Pop: Veri elemanı çıkarmak için kullanılır. Bu işlem, yığının en üst elemanını fiziksel olarak kaldırır, böylece onun altındaki eleman görünür hale gelir. İkinci ve daha aşağıdaki tüm elemanlar hâlâ program tarafından görülemez.

  • Top: Bu işlev, yığının en üst elemanının değerini gösterir, ancak onu fiziksel olarak kaldırmaz.

Bu temel işlemlerin yanı sıra, yığına ilişkin bazı yardımcı işlevler de tanımlanabilir. Bunlar arasında yığının boş olup olmadığını kontrol eden "empty stack" ve yığının yapılandırılmasını sağlayan "init stack" fonksiyonları yer alır.

Yığını diziyi kullanarak (sabit veya dinamik) uygulamayı planlasak da, yığına özgü tüm işlevleri kolayca uygulayabiliriz. Bu yapının çalışması için, yığındaki tüm verileri işleyebilmek ve yığıdın nasıl çalıştığını anlayabilmek için yeterli temel anlayışa sahip olmalıyız.

Yığına bir örnek olarak, bir palindromun kontrolünü gerçekleştiren bir program verilebilir. Aşağıdaki örnekte, yığına elemanlar eklenirken kontrol etme ve çıkarma işlemleri gerçekleştirilir.

Yığına eklenen elemanlar: tuna, nut, wilderness walk, Edna we wander a foot, a dog to plan a canal pagoda

Örnekte görüldüğü gibi, yığına elemanlar eklenirken ve birer birer çıkarılırken palindrom kontrolü gerçekleştirilir. Sonuçta, palindrom olan kelimeler tespit edilir.

Kuyruk (Queue) Veri Yapısı

Kuyruk (queue), sınırlı erişimli bir veri yapısını modellemek için kullanılır. Kuyruk genellikle, veri giriş hızı ile işlenme hızı arasında bir fark olduğu durumlarda kullanılır, yani gelen verinin hızı, verinin işlemden geçmesi hızından daha hızlı olabilir. Bu durumda, bir bekleme kuyruğuna ihtiyaç duyulur.

Kuyruk İşlemleri

Kuyruğun gerekli işlemleri aşağıdaki gibidir:

  • Ekleme (Enqueue): Bir elemanı kuyruğa ekler.
  • Çıkarma (Dequeue): Kuyruktan elemanları çıkarır.
  • Ön ve Arka Elemanları Gösterme: İlk elemanı (ön/front) ve son elemanı (arka/rear) gösterir.

Bu konteynır yapısı, banka kuyruğunu modellemek için kullanılabilir. Kuyrukta en önde bekleyen kişi işlem göreceği zaman kuyruktan çıkarılır ve en son gelen kişi ise arka kısmına eklenir.

Aşağıdaki örnekte, bir yazdırma kuyruğu modellemesi bulunmaktadır. Kuyruğa bir milyon iş ekleyebilirsiniz, ancak yazıcı mekanik bir cihaz olduğu için dakikada sadece belirli bir sayıda sayfa yazdırabilir. Bu nedenle kuyruk, yazdırma talepleri ve yazdırma işlemi arasına girerek, yazıcıyı arkasında bekleyen işlerle tıkanmadan işlerin gerçekleştirilmesini sağlar.

Yazdırma kuyruğuna eklenen işler:
1. İş
2. İş
3. İş
4. İş
...

Yukarıdaki örnekte, yazdırma kuyruğuna işler eklenir, ardından işler sırayla çıkarılır ve yazıcıya gönderilir. Kuyruğun en önündeki iş, yazdırılan ilk iş olurken, en arkasındaki işler hala kuyruktadır.

Kuyruk da yığın gibi basit bir yapıdır ve programlaması oldukça kolaydır. Tek yapmanız gereken, kullanıcılara yukarıda bahsettiğimiz temel işlemleri sunmanız ve veri elemanları yalnızca ADT ile işlem yapmalarını sağlamaktır.

Yığın ve Kuyruk Veri Yapılarının Kullanımı

Yığın ve kuyruk yapısı, programlama problemlerini çözmek için son derece yararlı olan yapılar arasındadır. Her bir yapının kendi benzersiz özellikleri vardır ve geniş bir yelpazede programlama durumuna uygulanabilirler. Bu veri yapılarını daha iyi anladıkça, tasarımlarınızda kullanabileceğiniz birçok yer bulacağınıza eminim.

Sonuç

Yığın (stack) ve kuyruk (queue), her programcının araç çantasında bulunması gereken son derece kullanışlı yapılar arasındadır. Her bir yapı, benzersiz özelliklere sahiptir ve geniş bir programlama durumu yelpazesinde kullanılmak için uygundur. Bu yapıları daha iyi anladığınızda, onları tasarımlarınıza dahil etmek için birçok farklı şekil bulacaksınız. Bu veri yapıları, programlama dünyasına yeni uygulamalar getirebilir. Başarılar dilerim!


Highlights:

  • Yığın (stack) ve kuyruk (queue) veri yapıları, listelerin temelini oluşturur.
  • Yığın veri yapısı LIFO (last in, first out) prensibine göre çalışırken, kuyruk veri yapısı FIFO (first in, first out) prensibine göre çalışır.
  • Yığında temel işlemler "push", "pop", ve "top" olarak adlandırılır.
  • Kuyrukta temel işlemler ise "enqueue", "dequeue", ve "front/rear" olarak adlandırılır.
  • Kuyruk ve yığın veri yapıları programlama dünyasında birçok farklı alanda kullanılır ve tasarımlara güç katarlar.

Kullanılan Kaynaklar:

Sıkça Sorulan Sorular (FAQ)

  1. Yığın ve kuyruk veri yapıları arasındaki temel fark nedir? Yığın (stack) veri yapısında LIFO (last in, first out) prensibi kullanılır ve yalnızca üstteki elemana erişilebilir. Kuyruk (queue) veri yapısında ise FIFO (first in, first out) prensibi kullanılır ve hem baş hem de son elemana erişilebilir.

  2. Yığın ve kuyruk veri yapıları hangi durumlarda kullanılır? Yığın (stack) veri yapısı, geriye dönük işlemler ve önceliklendirme gibi durumlarda sıkça kullanılır. Kuyruk (queue) veri yapısı ise işlemlerin sırayla gerçekleşmesi gereken durumlarda kullanılır, örneğin yazdırma kuyruğu gibi.

  3. Yığın ve kuyruk veri yapılarıyla başka neler yapılabilir? Yığın ve kuyruk veri yapıları, çeşitli algoritma ve veri işleme problemlerini çözmek için kullanılabilir. Örneğin, yığın veri yapısı düz metni tersine çevirmek için kullanılabilirken, kuyruk veri yapısı ağaç dolaşma algoritmalarında yardımcı olabilir.

  4. Yığınlarda ve kuyruklarda veri elemanı sınırlaması var mıdır? Evet, her iki veri yapısında da genellikle bir sınırlama vardır. Bunun nedeni, kullanılan bellek miktarının kontrol altında tutulması ve performansın optimize edilmesidir.

  5. Yığın ve kuyruk veri yapıları hakkında daha fazla kaynak nerede bulunabilir? Yığın ve kuyruk veri yapıları hakkında daha fazla bilgi için çeşitli kaynaklara başvurabilirsiniz. Önerilen kaynaklar arasında dökümantasyonlar, kitaplar ve çevrimiçi kaynaklar bulunmaktadır. Yukarıdaki kullanılan kaynaklar da bu konuda başlangıç için uygun birer kaynak olabilir.

Are you spending too much time on seo writing?

SEO Course
1M+
SEO Link Building
5M+
SEO Writing
800K+
WHY YOU SHOULD CHOOSE Proseoai

Proseoai has the world's largest selection of seo courses for you to learn. Each seo course has tons of seo writing for you to choose from, so you can choose Proseoai for your seo work!

Browse More Content