Tumpukan adalah salah satu struktur data terpenting dalam bahasa Java. Implementasinya setidaknya harus mencakup metode berikut:
1. operasi pop() pop, pop elemen teratas tumpukan.
2. operasi dorong(E e).
3.peek() Melihat elemen teratas tumpukan
4.isEmpty() Apakah tumpukannya kosong?
Selain itu, ketika menerapkan tumpukan, beberapa masalah harus dipertimbangkan:
1. Ukuran awal tumpukan dan cara menambah ruang tumpukan baru setelah tumpukan penuh
2. Sinkronisasi diperlukan saat memperbarui tumpukan
Contoh sederhana menggunakan array untuk mengimplementasikan stack, kodenya adalah sebagai berikut:
Copy kode kodenya sebagai berikut:
tumpukan kelas publik<E> {
// Java tidak mendukung array generik. Jika Anda perlu menggunakannya, silakan gunakan container yang disediakan oleh Java.
tumpukan Objek[] pribadi;
//Ukuran awal tumpukan default
int akhir statis pribadi INIT_SIZE = 2;
//Tumpukan indeks teratas
indeks int pribadi;
tumpukan publik() {
tumpukan = Objek baru[INIT_SIZE];
indeks = -1;
}
/**
*Metode konstruksi
*
* @param initSize
* Ukuran awal tumpukan
*/
tumpukan publik(int ukuran init) {
jika (ukuran init < 0) {
melempar IllegalArgumentException();
}
tumpukan = Objek baru[Ukuran init];
indeks = -1;
}
/**
* Operasi pop
*
* @return objek teratas tumpukan
*/
E pop yang disinkronkan publik() {
jika (!isEmpty()) {
E suhu = mengintip();
tumpukan[indeks--] = nol;
suhu kembali;
}
kembalikan nol;
}
/**
* Operasi dorong
*
* @param keberatan
* Objek menunggu untuk didorong ke tumpukan
*/
void push yang disinkronkan publik (E obj) {
jika (penuh()) {
Objek[] temp = tumpukan;
// Jika tumpukan sudah penuh, buat tumpukan dengan dua kali ruang tumpukan saat ini
tumpukan = Objek baru[2 * tumpukan.panjang];
System.arraycopy(temp, 0, stack, 0, temp.length);
}
tumpukan[++indeks] = objek;
}
/**
* Lihat objek teratas di tumpukan
*
* @return objek teratas tumpukan
*/
intip E publik() {
jika (!isEmpty()) {
kembali (E) tumpukan[indeks];
}
kembalikan nol;
}
/**
* Periksa apakah tumpukannya kosong
*
* @return Mengembalikan nilai benar jika tumpukan kosong, jika tidak, mengembalikan nilai salah
*/
boolean publik isEmpty() {
indeks pengembalian == -1;
}
/**
* Periksa apakah tumpukan sudah penuh
*
* @return Mengembalikan nilai benar jika tumpukan penuh, jika tidak, mengembalikan nilai salah
*/
boolean publik isFull() {
return indeks >= stack.length - 1;
}
}
Terakhir, struktur data tumpukan (java.util.Stack) diimplementasikan di Java, diimplementasikan dengan mewarisi kelas Vector, dalam keadaan normal, kita bisa menggunakannya secara langsung.