Penciptaan antara muka untuk baris gilir aksara.
Tiga pelaksanaan untuk dibangunkan:
Baris gilir linear saiz tetap.
Baris gilir bulat (menggunakan semula ruang tatasusunan).
Baris gilir dinamik (berkembang mengikut keperluan).
1 Cipta fail bernama ICharQ.java
// Antara muka baris gilir aksara.
antara muka awam ICharQ {
// Memasukkan aksara ke dalam baris gilir.
void put(char ch);
// Alih keluar aksara daripada baris gilir.
char get();
}
2 Cipta fail bernama IQDemo.java.
3 Mula mencipta IQDemo.java dengan menambah kelas FixedQueue yang ditunjukkan di sini:
4 Tambahkan kelas CircularQueue yang ditunjukkan di bawah pada IQDemo.java.
Kendalian Baris Pekeliling: Menggunakan semula ruang yang dikosongkan dalam tatasusunan apabila mengalih keluar elemen Ia boleh menyimpan bilangan elemen tanpa had, selagi terdapat pengalihan keluar.
Syarat Sempadan: Baris gilir tidak penuh apabila penghujung tatasusunan dicapai, tetapi apabila item yang tidak dialih keluar ditimpa oleh yang baharu.
Kaedah put() mesti menyemak beberapa syarat untuk menentukan sama ada baris gilir penuh.
Syarat untuk Baris Penuh: Baris penuh jika: putloc adalah unit yang lebih kecil daripada getloc. putloc berada di penghujung tatasusunan dan getloc berada di permulaan.
Keadaan Baris Kosong: Baris kosong apabila getloc dan putloc adalah sama.
Saiz Tatasusunan: Tatasusunan asas dibuat satu unit lebih besar daripada saiz baris gilir untuk memudahkan semakan.
5 Masukkan kelas DynQueue yang ditunjukkan di bawah dalam IQDemo.java. Ia melaksanakan baris gilir "boleh dilanjutkan" yang mengembangkan saiznya apabila ruang kehabisan.
6 Untuk menunjukkan tiga pelaksanaan ICharQ, masukkan kelas berikut ke dalam IQDemo.java. Ia menggunakan rujukan ICharQ untuk mengakses semua baris gilir.
kelas IQDemo {
public static void main(String args[]) {
FixedQueue q1 = FixedQueue(10) baharu;
DynQueue q2 = DynQueue(5) baharu;
CircularQueue q3 = CircularQueue(10);
baharu
ICharQ iQ;
char ch;
int i;
iQ = q1;
// Memasukkan beberapa aksara ke dalam baris gilir tetap.
untuk(i=0; i < 10; i )
iQ.put((char) ('A' i));
// Memaparkan baris gilir.
System.out.print("Kandungan baris gilir tetap: ");
untuk(i=0; i < 10; i ) {
ch = iQ.get();
System.out.print(ch);
}
System.out.println();
iQ = q2;
// Memasukkan beberapa aksara ke dalam baris gilir dinamik.
untuk(i=0; i < 10; i )
iQ.put((char) ('Z' - i));
// Memaparkan baris gilir.
System.out.print("Kandungan baris gilir dinamik: ");
untuk(i=0; i < 10; i ) {
ch = iQ.get();
System.out.print(ch);
}
System.out.println();
iQ = q3;
// Memasukkan beberapa aksara ke dalam baris gilir bulat.
untuk(i=0; i < 10; i )
iQ.put((char) ('A' i));
// Memaparkan baris gilir.
System.out.print("Kandungan baris gilir bulat: ");
untuk(i=0; i < 10; i ) {
ch = iQ.get();
System.out.print(ch);
}
System.out.println();
// Memasukkan lebih banyak aksara ke dalam baris gilir bulat.
untuk(i=10; i < 20; i )
iQ.put((char) ('A' i));
// Memaparkan baris gilir.
System.out.print("Kandungan baris gilir bulat: ");
untuk(i=0; i < 10; i ) {
ch = iQ.get();
System.out.print(ch);
}
System.out.println("nSimpan dan gunakan daripada"
" baris gilir bulat.");
// Menyimpan dan menggunakan item daripada baris gilir pekeliling.
untuk(i=0; i < 20; i ) {
iQ.put((char) ('A' i));
ch = iQ.get();
System.out.print(ch);
}
}
}
7 Cipta versi bulat DynQueue. Tambahkan kaedah tetapan semula() pada ICharQ yang menjaringkan baris gilir. Buat kaedah statik yang menyalin kandungan satu jenis baris gilir yang lain.
Atas ialah kandungan terperinci Buat antara muka Baris Gilir. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!