1. Tulis di depan
Antrian dalam struktur data harus lebih akrab, yang pertama-tama. Karena ketertiban, mereka disebut antrian. Ini seperti antrian. Memasukkan simpul baru di ujung depan, menghapus node pada kerangka kerja koleksi pertama.jdk juga menyediakan antarmuka antrian. Antarmuka ini mewakili antrian. Antrian berurutan: arrayblockingqueue, linkedblockingqueue. (Dua di atas adalah antrian warna kaki) dan yang lainnya adalah concurentlinkedqueue.
Implementasi yang mendasari terdiri dari dua jenis daftar gabungan. Implementasi array akan memiliki kelemahan, yang akan menyebabkan kepenuhan palsu. Pada awalnya, ketika antrian kosong, variabel referensi dari variabel referensi pertama ke ekor adalah nol. Karena elemen antrian dihapus, depan+1 akan terjadi, dan bagian belakang sama dengan kapasitas array yang mendasarinya. Dalam struktur penyimpanan berurutan, Front selalu menyimpan indeks elemen yang akan keluar dari antrian dalam antrian, dan bagian belakang selalu menyimpan indeks elemen yang akan dimasukkan ke dalam antrian. Jumlah elemen dalam antrian adalah bagian belakang. Dalam antrian berurutan, lapisan yang mendasarinya adalah array, sehingga elemen data yang disimpan tidak akan berubah, dan hanya dua variabel referensi, belakang dan depan, diubah.
Apa yang dapat digunakan untuk secara efektif memanfaatkan ruang menggunakan penyimpanan rantai di sini adalah bahwa variabel referensi memakan ruang ekstra.
Operasi Umum untuk Antrian:
1: Inisialisasi
2: Kembalikan panjang antrian
3: Tambahkan elemen
4: Hapus elemen
5: Akses elemen header
6: Mengakses elemen pasangan tail antrian
7: Tentukan apakah antriannya kosong
8: Bersihkan antrian
2. Implementasi Kustom
Tampilan kode sumber jelas, jadi tidak perlu memperkenalkannya
Kelas Publik LinkedQueue <T> {// Kelas internal non-statis rantai rantai kustom untuk mewakili simpul data dari simpul kelas pribadi antrian rantai {// menunjukkan simpul data dari data t antris rantai. @SuppressWarnings ("tidak digunakan") node publik () {} node publik (data t, node selanjutnya) {this.data = data; this.next = next; }} // Tentukan referensi ke kepala dan ekor bagian depan simpul pribadi antrian rantai; belakang simpul pribadi; // Tentukan ukuran rantai stack ukuran int pribadi; // Buat publik rantai-ke-kolom LinkedQueue () {front = null; rear=null;}//Create a chain-pair column with a certain element, and only one node public LinkedQueue(T element){front=new Node(element,null);//Point to the same element rear=front;size++;}//Return the size of the chain queue public int length(){return size;}//Return the element with the right header in the chain queue, and do not delete the header element public T elementFront () {if (! empt ()) {return front.data;} else {return null; }} // Akses elemen terakhir dari elemen tublic public t elementRear () {if (! Kosong ()) {return reter.data; } else {return null; }} // Kembalikan apakah antrian pasangan rantai saat ini kosong boolean public ofcank () {return size == 0; } // Bersihkan rantai antrian public void clear () {front = null; belakang = null; size = 0;} // Masukkan simpul dalam antrian rantai-pasangan public void add (elemen t) {// Jika kolom pasangan rantai kosong, buat simpul baru if (front == null) {belakang = node baru (elemen, null); depan = belakang; } else {// Dinamicly Buat simpul node baru newRear = node new (elemen, null); REAR.NEXT = newRear; belakang = newrear; } size ++;} // hapus node dalam antrian rantai dan kembalikan node public public t lepas () {node oldfront = front; front = front.next; oldfront.next = null; ukuran--; return oldfront.data;} // kembalikan string publik antrian toString () {// Jika antrian rantai adalah antrian rantai kosong adalah jika (kosong ()) {return "[]"; } else {stringBuilder sbuilder = new stringBuilder ("["); untuk (node current = front; current! = null; current = current.next) {sbuilder.append (current.data.toString ()+",");} int len = sbuilder.length (); return sbuilder.delete (len-1, len) .append ("]"). tostring ();}} public static void main (string [] args) {linkedqueue <string> lqueue = new Linkedqueue <String> (); lqueue.add ("aaa"); lqueue.add ("bbb"); lqueue.add ("ccc"); lqueue.add ("ddd"); system.out.println ("Mengembalikan nilai simpul kepala antrian:"+lqueue.elementfront ()); System.out.println ("Mengembalikan nilai simpul ekor dari antrian: "+lqueue.elementrear ()); System.out.println (lqueue.length ()); System.out.println (lqueue);}}Hasil Menjalankan:
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.