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.
|