View Single Post
Eski 08/01/2007, 15:23   #2 (permalink)
mr1yh1
Eski Cevizci
 
mr1yh1 Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 04/2005
Yer: samsun
Mesaj: 1,195
Varsayılan

queue = kuyruk
yani ilk giren son çıkar (FILO) yapısı.
circular queue kullanım olarak, diğeri ile aynı
fark implementasyonda ( yani kodlanmasında ).

queue, bağlı-liste olarak kodlanabilir.
ya da dizi olarak kodlanabilir.
circular queue, dizi olarak kodlanması için gerekli.
aksi durumda, her eleman çıkartılması durumunda,
dizinin tüm elemanlarını kaydırmak zorundasın ( ki saçma olur. )

dizinin başına ve sonuna işaret edecek iki adet indise ihtiyacın var.
( mesela head(başlangıç) ve tail(son) )
kuyruğa eleman eklendiğinde tail bir artacak.
eleman okunduğunda ( genelde pop() ile okunur ) head bir ilerleyecek.
( peek() şeklinde sadece elemanı okuyan
ama silmeyen bir metod daha eklemen iyi olur.)

boş kuyruk için tail = head + 1 olarak kodlarsan,
kuyruğun dolu olup olmadığının kontrolü kolaylaşır.
yani head = tail olmamalı ( boş kuyruk için bile ..)

mod kullanmadan,
if ile indis arttırma durumlarını denetleyebilirsin, daha performanslı olur.
mr1yh1 hatta değil   Alıntı Yaparak Yanıtla