Pir Zöhre Ana Forum

Tam Versiyon: Javada FIFO Stack(KUYRUK) Yapısı Acıklamalı Örnek
Şu anda arşiv modunu görüntülemektesiniz. Tam versiyonu görüntülemek için buraya tıklayınız.
Programdaki kodlar fifo(kuyruk) stack yapısını ayrıntılı bir sekilde acıklıyor. class kuyruk{

int i=-1;
int dizi[]=new int[20];
int kuyrukbosmu(){
if(i==-1) System.out.println("\nkuyruk bostur.\n"); //kuyruk bos mu degil mi kontrol et.
return -1;
}

int kuyrukdolumu(){
if(i==9) System.out.println("kuyruk doludur.");//kuyruk dolu mu degil mi kontrol et.
return -1;
}


int kuyrugaekle(int deger){
kuyrukdolumu();//kuyrukdolumu methodunu cagırarak kontrol ettik.eger kuyruk dolu degilse işlem yapabilecek.
i++; //i yi 1 artır,örneğin -1 ise 0 yap ve
dizi[i]=deger;//0.elemanın üzerine yeni degeri yaz.

return deger;

}

int kuyruktancikar(){

kuyrukbosmu();//kuyruk bos mu diye kontrol ettik ve eger bossa diger ifadelere gecmeden direk sonlanacak.

int index=0;//index diye bir deger tanımladık.bu deger her zaman kuyrugun ilk elemanını tutacak.
int j;//daha sonra döngü için j tanımladık.
int deger=dizi[index];
for (j=1; j<11; j++){
dizi[j-1]=dizi[j];
}
i--;
return deger;

//kuyrukta her zaman ilk elemandan itibaren alacagı için elemanları her seferinde 1 kaydırdık.yani 1. eleman cıkınca 2. eleman 1.nin yerine,
//3. eleman, 2.nin yerine vs. ve en sonunda i yi 1 azaltarak dizimizin her seferinde 1 göz küçülmesini sagladık.
}
}
class kuyrukdeneme{
public static void main(String args[]){
kuyruk nesne1=new kuyruk();//"kuyruk" tipinde yeni bir nesne tanımladık.biliyoruz ki new komutu ile nesne tanımladıgımız zaman bize
// ismi bellegin stack bölgesinde,degiskenin kendisi ise bellegin heap bölgesinde tutulan bir degisken veriyordu.

//kuyruga istedigim sayilari ekledim.
nesne1.kuyrugaekle(1);
nesne1.kuyrugaekle(2);
nesne1.kuyrugaekle(3);
nesne1.kuyrugaekle(4);
nesne1.kuyrugaekle(10);
nesne1.kuyrugaekle(20);
nesne1.kuyrugaekle(30);
nesne1.kuyrugaekle(40);
nesne1.kuyrugaekle(100);
nesne1.kuyrugaekle(200);
//BURADA HERHANGİ BİR DONGU KULLANARAK KUYRUGUN ELEMANLARINI DÖNGÜ İLE DE YAZDIRABİLİRİZ.BEN DAHA İYİ GÖRÜLMESİ İÇİN FARKLI DEGERLER KOYDUM.


for (int j = 0; j<10; j++)
System.out.println("kuyrugun " +(j+1)+".elemanı :"+nesne1.dizi[j]);//dizimizin ilk 20 gözünü bize göster.


//simdi de kuyruktakiki tüm elemanları cıkaralım.
System.out.println("\nkuyruktan sirasiyla");

for (int k =0; k<10; k++){
System.out.println(nesne1.kuyruktancikar()+" cikarildi.");//cikarilan her elemanı bize göster.
}
}
}

/*sonuc olarak biz sabit degerler kullanarak kuyrugun gözlerine ekleme, cıkarma ve bos mu yoksa dolumu oldugunu anlamak için 4 tane method yazdık.
bu program daha da geliştirilebilir.mesela kuyruga eklenecek degerler komut satırından eklenebilir ya da buton ilave edilebilir.