Arkadaşlar merhaba sizlerle beraber başladığımız veri yapılarına istedimki
devam edelim ve nette gezerken denk geldiğim bu kuyruk hikayesi çok hoşuma gitti
ve hemen site ile paylaşmaya karar verdim.Bu tür konu anlatımının hafızanızda
daha iyi yer tutacağina inanıyorum.Şimdi veri yapılarından olan kuyruk ile devam edelim.
Yine örneklerle anlatalım. Bir banka sahibi olduğunuzu düşünün.
Sahibi olduğunuz banka büyük bir mali krizin eşiğinde ve müşterilerin paralarını çekmek
için bankanıza doğru yöneldikleri haberini alıyorsunuz. Pencereden dışarıya baktığınızda
müşterilerin teker teker bankanızın önünde kuyruğa girdiklerini görüyorsunuz.
Parasını çeken sıradan çıkıyor ve sıranın en önüne gelen yeni kişi parasını çekmeye hazırlanıyor.
Ve bu arada sıraya yeni gelen kişiler de teker teker sıranın en arkasına dahil olarak sırayı büyütüyor.
Sırada kimse kalmadığında siz de pencereden ayrılıp işinizin başına dönüyorsunuz.
Yukarıda anlattığım kısa hikaye kuyruk hakkında çok önemli bilgiler içeriyor.
Banka sırasına giren her kişi bir objeyi temsil ediyor. Sıraya ilk gelen kişi sıranın en sonundaki
kişinin arkasına geçiyor (enqueue). Sıradan çıkan ilk kişi sıranın en önünde bulunan ve işini bitirmiş
olan kişi oluyor (dequeue). Kuyruk hakkında bilmemiz gereken şey eklediğimiz obje, listemizin
en sonuna eklenir ve istekte bulunduğumuz obje, listenin başından verilir. Ayrıca bu normal
kuyruk yapısı dışında, öncelik kuyruğu (priortiy queue) veya olay kuyruğu (event queue) gibi
diğer kuyruk yapıları da kullanılmaktadır.
Şimdi sizlere yazmış olduğum kuyruk yapısı kodunu vereyim.Kuyruk yapıları genelde
Link List ile yazılır ben de severim çünkü Link List özgürlük demektir benim için
ama ben başlangıç olması açısından sizlere dizi ile olan uygulamasını veriyorum.
Java ile uğraşan arkadaşlar umarım en iyi şekilde yararlanırlar.
Herkse kolay gelsin.
Saygılarımla.
Seyhan Uçar
CODE:
import java.io.*;
//============================================================
class Queue
{
private int maxsize;
private int[] queuearray;
private int front;
private int rear;
private int nitems;
//========================================================
public Queue(int s)
{
maxsize = s;
queuearray = new int[maxsize];
front = 0;
rear = -1;
nitems = 0;
}
//========================================================
public void enqueue(int j)
{
if(rear == maxsize - 1)
rear = -1;
queuearray[++rear] = j;
nitems++;
}
//========================================================
public int dequeue()
{
int temp = queuearray[front++];
if(front == maxsize)
front = 0;
nitems--;
return temp;
}
//========================================================
public int queuefront()
{
return queuearray[front];
}
//========================================================
public boolean isEmpty()
{
if(nitems == 0)
return true;
else
return false;
}
//========================================================
public boolean isFull()
{
if(nitems == maxsize)
return true;
else
return false;
}
//========================================================
}
class QueueApp
{
public static void main(String[] args) throws IOException
{
Queue queue = new Queue(10);
queue.enqueue(10);
queue.enqueue(20);
queue.enqueue(30);
queue.enqueue(40);
queue.enqueue(50);
queue.dequeue();
queue.dequeue();
queue.dequeue();
queue.enqueue(60);
queue.enqueue(70);
queue.enqueue(80);
while(!queue.isEmpty())
{
int n = queue.dequeue();
System.out.print(n);
System.out.print("-->");
}
System.out.println("");
}
}
//============================================================
[IMG SRC="http://img225.imageshack.us/img225/2408/seyhanzt2.jpg" ALIGN="oğuz"]seyhan[/IMG]
tesekurler seyhan arkadasim yararli bir calisma olmus.
saygilar
[IMG SRC="http://img225.imageshack.us/img225/2408/seyhanzt2.jpg" ALIGN="oğuz"]seyhan[/IMG]
Katılım olsa bende socket programlama client server konularına girmeyi düşünüyorum.Ancak şu durumda birşey ifade edeceğini zannetmiyorum:)Kolay gelsin kardeşim hepinize..
Merhabalar, Oguz arkadasim neden bir sey ifade etmesin .
Siz yazin gereken ilgi gosterilir.
Saygilar
İlgi gösterileceğinden şüphemiz yok:) Zaman bulur bulmaz sıralı konuları eğitime yazarım.
İyi günler.
ben sahsen bekliyorum olacagim :). kolay gelsin
iyi gunler
Bişey Sorucam Bu Dolu veya boş olduğunu nitems gibi bi sayaç olmadan nasıl bulabiliriz?
hoca ödev verdi notumuzu etkilicek lütfen yardım
