Bölüm 8 · SimülasyonDairesel Kuyruk Simülatörü? ← Bölüm 8DeğerEnqueue · ekle Dequeue · cikar Peek · ilk İptalKapasite N4568Kuyruk doluncathrow "dolu"büyüt: buyut(2 · N)Başa Sarma Örneği TemizleHalka görünümüDizi görünümüAdımBir işlem seçin.Kod KapatDairesel Kuyruk SimülatörüDiziyi bir halka gibi kullanan dizi tabanlı kuyruk. Kuyruğu yalnızca iki sayı tanımlar: bas (öndeki öğenin indisi) ve boyut (öğe sayısı). Sıradaki boş hücre saklanmaz, hesaplanır: son = (bas + boyut) % dizi.length.KullanımEnqueue ekle(deger), Dequeue cikar(), Peek ilk() metodunu çalıştırır. Her adımda o anki Java satırı vurgulanır ve indis hesabı gösterilir.Kapasite N o boyutta boş bir kuyruk başlatır. Kuyruk dolunca seçimi, "dolu" hatası fırlatmak ile diziyi buyut(2 · N) ile iki katına çıkarmak arasında seçim yapar.Başa Sarma Örneği N = 5, bas = 2, boyut = 2 (30, 40) durumunu yükler: sonraki yazmalar dizi[0] ve dizi[1] hücrelerine sarar.İptal çalışan işlemi durdurur ve kuyruğu işlemden önceki hâline getirir.Görünümleri okumaHalka görünümü: her dilim bir dizi hücresidir; kırmızı kenar bas konumunu, turuncu dilim okunan ya da yazılan hücreyi gösterir.Dizi görünümü: aynı hücreler indis sırasıyla, ▲bas ve ▲son işaretleriyle gösterilir; büyütme sırasında yeni dizi yeni altta belirir.NotlarDolu ve boş kuyrukta bas == son olur; ikisini boyut ayırt eder.cikar() boşalan hücreye null yazar, böylece nesne çöp toplayıcı tarafından toplanabilir; hiçbir öğe kaydırılmaz.Büyütme öğeleri kuyruk sırasıyla kopyalar (yeni[k] = dizi[(bas + k) % N]) ve bas = 0 yapar; düz bir Arrays.copyOf sarılmış sırayı korur ve kuyruğu bozardı.KarmaşıklıkİşlemSüreekle (büyütmesiz), cikar, ilkO(1)buyut ile ekleBir kez O(n), amortize O(1)