Ana içeriğe atla

Java Kuyruk(Queue) Yapısı

Merhaba arkadaşlar. Java'da kuyruk yapısını nasıl oluşturabiliriz, kuyruk yapısı nedir, mantığı nedir gibi konuları bu yazıda anlatmaya çalışacağız. Kuyruk nedir tanımlamakla başlayalım

Kuyruk(Queue), FIFO (first in-first out) yapısı ile nesneleri birarada tutan veri yapısıdır. Yani, ilk eklediğimiz nesne, her zaman ilk olarak çıkar. Nesnelerin çıkarılma sırası, eklenme sırası ile doğru orantılıdır. Şu küçük gif dosyası olayı biraz daha anlamamıza yardımcı olabilir.

Şimdi, bir kuyruk yapısını Java'da kendimiz nasıl tanımlayabileceğimizi görelim ve daha sonra açıklamaya geçelim. Sonra da Java'da hazır bulunan sınıflarla nasıl kuyruk yapısı oluşturacağımızı görelim.

İlk olarak sınıfımızı tanımladık, sonrada diziyi oluşturduk. Dizinin elemanlarının indeksini tutan iki tane önemli değişkenimiz var. Birisi fore, diğeri back. fore değişkeni, diziye eleman eklendikçe, dizinin sonuna yerleştirilecek elemanın indeksini tutar. Eğer, dizinin sonuna gelirse ve kuyruğun başında boşluk varsa, dizinin boyutuna göre modunu alırız ve böylece tekrar başa geçmiş olur. back değişkeni ise, kuyruğun baş kısmını tutar. Aynı şekilde dizinin sonuna ulaşırsa, dizinin boyutuna göre modunun alırız ve tekrar başa döner

Şimdi de, Java'da dahili olarak bulunan sınıflarla bir kuyruk yapısını nasıl tanımlayabileceğimizi görelim.
Veri yapılarında işin mantığını anlamak çok önemli. Çünkü ezber yaparak öğrenmek,hem çabuk unutmaya sebep olur, hem de öğrendiğimiz yapıyı nasıl kullanabileceğimizi düşünmemize engel olur. Dolayısı ile mantığı anlamaya çalışalım.

Yararlanılan kaynak: https://www.geeksforgeeks.org/queue-interface-java/

Yorumlar

  1. dizinin eleman sayisini degistirmiyoruz,yani silinen eleman yerine yeni bir icerik ekliyebilmeliyiz,ama biz orayi gormeden basi ilerletiyoruz ve yokmus gibi davraniyoruz.yukaridaki gif'te ayni sekilde,aciklarsaniz sevinirim...
    (harfler icin ozur dilerim)

    YanıtlaSil
    Yanıtlar
    1. Merhaba. Kuyruk veri yapısında silinen elemanın yerine tekrar ekleme yapabilmek için, imlecin tekrar o indexe gelmesi gerekiyor. Gif resminde dikkat ederseniz ilk eklenen 'a' değerinin yerine, imlec başa dönünce 'g' değeri yerleşiyor. Kuyruk veri yapısının mantığı bu şekildedir. Silinen elemanın eski değeri bizi ilgilendirmez, sadece ekleme ve çıkarma sırası bizim için önemlidir.

      Sil
    2. Merhaba,acaba kaçıncı sırada oldugunu nasıl cekebiliriz?
      getPosition() gibi bir method ile.

      Sil
    3. Merhaba. Kaçıncı sırada olduğunu değil de, kuyruğun boyutunun ne olduğunu öğrenmek daha mantıklı sanki :) . Ama yine de hangi sırada olduğunu öğrenmek için fore ve back değişkenlerini kullanıcıya döndürmek yeterli.

      Sil

Yorum Gönder

Bu blogdaki popüler yayınlar

Python Soket Programlama

Merhaba arkadaşlar. Bugün sizlerle birlikte Python'da socket programlama yapacağız. Bunun için Python da socket kütüphanesini kullanacağız. Peki nedir bu socket programlama? Soket programlama, sizin iki program arası yada iki bilgisayar arası iletişim kurmanızı sağlar. İşte bizde bugün iki programımızı birbiri ile haberleştireceğiz. Bunun için elimizde iki program olacak. Birinci program,mesaj bekleyen program olacak, diğeri ise mesaj gönderen program.

Python Subprocess

subprocess modülü, yeni bir process oluşturmayı sağlayan, bunların girdi-çıktılarını ele alma imkânı veren ve dönüş kodlarını almayı sağlayan bir modüldür. Yani daha basit bir şekilde, program içinde program çalıştırmaya imkan veren bir modüldür. Subprocess Modülünün Kullanımı subprocess basit bazı process'leri kullanmak için birkaç tane fonksiyon sunuyor. Daha karmaşık bir process çalıştırmak isterseniz, Popen sınıfını kullanabilirsiniz. Bunlara detaylı bir şekilde değinmeye çalışacağız. Şimdi basit fonksiyonları inceleyelim

Infix to postfix dönüşümü

Infix to postfix dönüşümü, operatorün ortada olduğu a+b yazım şeklini operatorün sonda olduğu ab+ yazım şekline dönüştürme işlemidir.  Infix gösterimi, bizler için kolay bir gösterim olsa da makineler için öyle değildir. İfadeyi soldan sağa doğru okurken a + b * c işleminde önce b ile c yi çarpıp sonra da a ile toplamayı kolay bir şekilde yapabiliriz çünkü bizim ifadeyi sıra ile soldan sağa adım adım giderek okuma zorunluluğumuz yok. Önce b*c nin öncelikle olduğunu görerek oradan başlar, sonra a ile kolayca toplarız.