Salinan kode adalah sebagai berikut:
/**
* Daftar tertaut satu arah
*
*/
Nodelist kelas publik <E> {
Node kelas statis pribadi <E> {// kelas simpul
Data; // data pada node
Node <e> Next; // Tunjuk ke node berikutnya
Node (e e) {
this.data = e;
this.next = null;
}
}
node pribadi <e> kepala; // node header dari daftar yang ditautkan
node pribadi <e> terakhir; // simpul ekor dari daftar yang ditautkan
node pribadi <E> lainnya = null;
Panjang int pribadi = 0; // Jumlah node
/**
* Metode konstruksi non-parameter
*/
nodelist publik () {
// simpul default kosong
this.head = node baru <E> (null);
}
/**
* Buat node selama inisialisasi
*
* @param data
* Data
*/
nodelist publik (data e) {
this.head = node baru <E> (data);
this.last = head;
panjang ++;
}
/**
* Tambahkan node (metode penyisipan ekor)
*
* @param data
* Data
*/
public void add (data e) {
if (isEmpty ()) {
head = node baru <E> (data);
terakhir = kepala;
panjang ++;
} kalau tidak {
Node <E> newNode = node baru <E> (data);
last.next = newNode;
terakhir = newnode;
}
}
/**
* Dapatkan data di indeks (Kesalahan input indeks melempar pengecualian di luar batas)
* indeks indeks @param
* @return data di indeks
*/
public e get (int index) {
if (index <0 || index> length) {
lempar indexOutofboundsException baru ("indeks:"+index);
}
Lainnya = kepala;
untuk (int i = 0; i <index; i ++) {
Other = Other.Next;
}
mengembalikan lainnya.data;
}
/**
* Nilai baru menggantikan nilai lama
* @return sukses itu benar, tidak ditemukan sebagai salah
*/
Set Boolean Publik (E OldValue, E NewValue) {
Lainnya = kepala;
while (lainnya! = null) {
if (Other.data.equals (oldValue)) {
Other.data = newValue;
Kembali Benar;
}
Other = Other.Next;
}
mengembalikan false;
}
/**
* Masukkan elemen setelah menentukan elemen
*
* @param data
* Elemen yang ditentukan
* @param InsertData
* Elemen yang perlu dimasukkan
* @return false adalah elemen yang tidak ditemukan, true adalah penyisipan berhasil
*/
Tambah boolean publik (data e, e sisipan) {
Lainnya = kepala;
while (lainnya! = null) {
if (Other.data.equals (data)) {
Node <E> newNode = node baru <E> (InsertData);
Node <E> temp = Other.next;
newnode.next = temp;
Other.next = newNode;
panjang ++;
Kembali Benar;
}
Other = Other.Next;
}
mengembalikan false;
}
/**
* Apakah elemen ini termasuk dalam daftar tertaut
* @return dimasukkan sebagai benar, tidak salah
*/
Boolean publik berisi (data e) {
Lainnya = kepala;
while (lainnya! = null) {
if (Other.data.equals (data)) {
Kembali Benar;
}
Other = Other.Next;
}
mengembalikan false;
}
/**
* Hapus elemen yang ditentukan
* @param elemen data yang perlu dihapus
* @return tidak ada dan benar untuk sukses
*/
boolean publik hapus (data e) {
Lainnya = kepala;
Node <E> temp = head; // variabel sementara, digunakan untuk menyimpan node sebelumnya
while (lainnya! = null) {
if (Other.data.equals (data)) {
temp.next = Other.next;
panjang--;
Kembali Benar;
}
temp = lainnya;
Other = Other.Next;
}
mengembalikan false;
}
/**
* Tentukan apakah daftar yang ditautkan kosong
*
* @return kosong itu benar, tidak kosong itu salah
*/
public boolean isEmpty () {
Panjang pengembalian == 0;
}
/**
* Hapus daftar tautan
*/
public void clear () {
this.head = null;
this.length = 0;
}
/**
* Output semua node
*/
public void printlink () {
if (isEmpty ()) {
System.out.println ("Daftar Tertaut Kosong");
}kalau tidak{
Lainnya = kepala;
while (lainnya! = null) {
System.out.print (Other.data);
Other = Other.Next;
}
System.out.println ();
}
}
}