Menurut saya tulisan penulis sangat bagus sehingga saya harus menyimpannya.
Pemahaman tentang contoh ini:
//Parameter tipe tidak bisa menggunakan tipe dasar. T dan U sebenarnya tipe yang sama.
//Setiap kali data baru ditempatkan, itu menjadi bagian atas yang baru. Dorong bagian atas yang asli ke bawah satu tingkat dan buat tautan melalui penunjuk.
//Penjaga akhir adalah node yang dibuat oleh konstruktor default yang konsisten dengan end() yang mengembalikan nilai true.
Copy kode kodenya sebagai berikut:
//: generik/LinkedStack.java
// Tumpukan diimplementasikan dengan struktur tertaut internal.
paket generik;
LinkedStack kelas publik<T> {
Node kelas statis pribadi<U> {
barang kamu;
Node<U> selanjutnya;
Node() { item = nol; selanjutnya = nol;
Node(item U, Node<U> selanjutnya) {
this.item = barang;
ini.berikutnya = selanjutnya;
}
boolean end() { mengembalikan item == null && selanjutnya == null }
}
private Node<T> top = Node baru<T>(); // Akhiri penjaga
public void push(Titem) {
atas = Node baru<T>(item, atas);
}
publik T pop() {
T hasil = top.item;
if(!top.end())
atas = atas.berikutnya;
hasil pengembalian;
}
public static void main(String[] args) {
LinkedStack<String> lss = LinkedStack<String>();
for(String s : "Phaser dalam keadaan setrum!".split(" "))
lss.push(s);
Tali ss;
while((ss = lss.pop()) != null)
Sistem.keluar.println(ss);
//----- jika memasukkan bilangan bulat ke dalam LinkedList
LinkedStack<Bilangan Bulat> lii = baru LinkedStack<Bilangan Bulat>();
for(Bilangan Bulat i = 0; i < 10; i++){
lii.push(i);
}
Akhir bilangan bulat;
while((akhir = lii.pop()) != null)
Sistem.keluar.println(akhir);
//----- pengujian bilangan bulat berakhir!
}
}
/* Keluaran:
setrum!
pada
Phaser
*/