Metode untuk mengimplementasikan antrian loop menggunakan java:
1. Tambahkan ukuran atribut untuk merekam jumlah elemen saat ini.
Tujuannya adalah saat head = belakang. Berdasarkan ukuran = 0 atau ukuran = panjang array. Untuk membedakan antrian sebagai kosong, atau antrian penuh.
2. Hanya elemen ukuran array -1 yang disimpan dalam array, memastikan bahwa bagian belakang tidak akan sama dengan kepala setelah memutarnya. Saat itulah antrian penuh. belakang+1 = kepala, hanya ada satu elemen di tengah.
Saat belakang = kepala. Antrian harus kosong.
Jenis operasi yang disepakati di kedua ujung antrian berbeda:
Akhir yang dapat dihapus disebut kepala tim, dan operasi seperti itu juga disebut dequeue;
Akhir yang dapat dimasukkan disebut ekor tim, dan operasi seperti itu juga disebut enqueue.
Diagram skematik antrian
Saat menerapkan antrian, Anda harus memperhatikan fenomena overflow palsu. Seperti yang ditunjukkan pada gambar terakhir di atas.
Luapan palsu seperti yang terlihat pada gambar
Solusi: Gunakan penyimpanan rantai, yang jelas bisa. Saat disimpan secara berurutan. Solusi umum kami adalah menghubungkannya ke ujung dan membentuk antrian melingkar. Ini memanfaatkan ruang penyimpanan antrian penuh.
Diagram Antrian Loop:
Pada gambar di atas. Poin depan ke elemen pertama dalam antrian. titik belakang ke posisi berikutnya di ujung antrian.
Tetapi masih ada masalah: ketika titik depan dan belakang ke posisi yang sama, apakah ini berarti tim kosong atau penuh? Anda bisa membayangkan situasi seperti itu.
Praktik umum untuk menyelesaikan masalah ini adalah ini:
Tanda digunakan untuk membedakan situasi yang membingungkan seperti itu.
Mengorbankan ruang unsur. Ketika depan dan belakang sama, mereka kosong. Ketika posisi belakang berikutnya di depan. Itu penuh.
Misalnya, gambar berikut:
Di bawah ini kami memberikan antrian lingkaran dan menggunakan cara lain, yaitu, mengorbankan ruang elemen untuk membedakan antara tim kosong dan penuh.
Beberapa poin utama:
1. Depan menunjuk ke kepala tim. Poin belakang ke posisi berikutnya di akhir tim.
2. Kesimpulan bahwa tim kosong: depan == belakang; Inferensi bahwa tim penuh: (belakang+1)%MaxSize == depan.
impor java.io.*; queuearray kelas publik {objek [] a; // array objek, antrian menyimpan hingga A.Length-1 objek int front; // dari bagian belakang sub subscript pertama; // dari akhir subskrip publik queuearray () {this (10); // hubungi konstruktor lain} public queuearray (ukuran int) {a = objek baru [ukuran]; depan = 0; belakang = 0; } / *** Tambahkan objek ke akhir antrian* @param obj objek* @return mengembalikan false ketika antrian penuh, jika tidak benar* / public boolean enqueue (objek obj) {if ((belakang+1)%a.length == depan) {return false; } a [belakang] = obj; belakang = (belakang+1)%a.length; Kembali Benar; } / *** Objek pertama di kepala antrian adalah dequeued* @return objek yang dequeued saat antrian kosong* / objek publik dequeue () {if (belakang == depan) {return null; } Objek obj = a [front]; front = (depan+1)%a.length; kembalikan obj; } public static void main (string [] args) {queueArray q = queuearray baru (4); System.out.println (q.enqueue ("Zhang San")); System.out.println (q.enqueue ("li si")); System.out.println (q.enqueue ("Zhao Wu")); System.out.println (q.enqueue ("wang yi")); // Tidak dapat memasukkan antrian, antrian penuh untuk (int i = 0; i <4; i ++) {System.out.println (q.dequeue ()); }}}Ringkasan di atas dari dua metode penerapan antrian melingkar berdasarkan array java adalah semua konten yang saya bagikan dengan Anda. Saya harap Anda dapat memberi Anda referensi dan saya harap Anda dapat mendukung wulin.com lebih lanjut.