Salinan kode adalah sebagai berikut:
/**
* Implementasi daftar tertaut dua arah
* @author lewati
* @Version 1.0
*/
Kelas Publik Doublenodelist <T> {
// Kelas Node
Node kelas statis pribadi <T> {
Node <T> Perv; // Node Depan
Node <T> NEXT; // Node terakhir
Data; // data
node publik (t t) {
this.data = t;
}
}
node pribadi <T> head; // head node
node pribadi <T> terakhir; // ekor node
Node Pribadi <T> Lainnya; // Operasi sementara untuk penyimpanan node siaga
Panjang int pribadi; // panjang daftar tertaut
/**
* Struktur non-glikopik
*/
public doublenodelist () {
head = node baru <T> (null);
terakhir = kepala;
panjang = 0;
}
/**
* Buat node selama inisialisasi
* @param data
*/
public doublenodelist (data t) {
head = node baru <T> (data);
terakhir = kepala;
panjang = 1;
}
/**
* Tambahkan node
* @param data menambahkan data
*/
public void add (data t) {
if (isEmpty ()) {
head = node baru <T> (data);
terakhir = kepala;
panjang ++;
}kalau tidak{
// Metode penyisipan ekor
lain = node baru <T> (data);
Other.perv = terakhir;
last.next = lainnya;
terakhir = lainnya;
panjang ++;
}
}
/**
* Masukkan node setelah menentukan data
* @param data yang ditentukan data
* @param InsertData Data yang dimasukkan
* @Return Return true jika penyisipan berhasil, salah jika penyisipan tidak berhasil.
*/
public boolean addafert (data t, t sisipan) {
Lainnya = kepala;
while (lainnya! = null) {
if (Other.data.equals (data)) {
Node <T> t = node baru <T> (InsertData);
t.perv = lainnya;
t.next = Other.next;
Other.next = t;
// menilai apakah akan menambahkan node setelah node terakhir
if (t.next == null) {
terakhir = t;
}
panjang ++;
Kembali Benar;
}
Other = Other.Next;
}
mengembalikan false;
}
/**
* Masukkan node sebelum menentukan data
* @param data yang ditentukan data
* @param InsertData Data yang dimasukkan
* @Return Return true jika penyisipan berhasil, salah jika penyisipan tidak berhasil.
*/
addBefore boolean publik (data t, t insertData) {
Lainnya = kepala;
while (lainnya! = null) {
if (Other.data.equals (data)) {
Node <T> t = node baru <T> (InsertData);
t.perv = Other.perv;
t.next = lainnya;
Other.perv.next = t;
panjang ++;
Kembali Benar;
}
Other = Other.Next;
}
mengembalikan false;
}
/**
* Dapatkan data di indeks
* indeks indeks @param
* @Return data
*/
public t get (int index) {
if (index> length || index <0) {
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 (t oldValue, t newValue) {
Lainnya = kepala;
while (lainnya! = null) {
if (Other.data.equals (oldValue)) {
Other.data = newValue;
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 t) {
Lainnya = kepala;
while (lainnya! = null) {
if (Other.data.equals (data)) {
Other.perv.next = Other.next;
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 T) {
Lainnya = kepala;
while (lainnya! = null) {
if (Other.data.equals (data)) {
Kembali Benar;
}
Other = Other.Next;
}
mengembalikan false;
}
/**
* Dapatkan data node terakhir
* @return data dari simpul terakhir
*/
public t getLast () {
return last.data;
}
/**
* Dapatkan data node pertama
* @Kembalikan data node pertama
*/
public t getFirst () {
return head.data;
}
/**
* Dapatkan panjang daftar yang ditautkan
* @return length
*/
public int getSize () {
panjang pengembalian;
}
/**
* Apakah itu tabel tautan kosong
* @return daftar kosong itu benar, dan daftar yang tidak kosong itu salah
*/
public boolean isEmpty () {
Panjang pengembalian == 0;
}
/**
* Hapus daftar tautan
*/
public void clear () {
head = null;
panjang = 0;
}
/**
* Output semua node dalam daftar tertaut
*/
public void printList () {
if (isEmpty ()) {
System.out.println ("Daftar Tertaut Kosong");
}kalau tidak{
Lainnya = kepala;
untuk (int i = 0; i <panjang; i ++) {
System.out.print (Other.Data+"");
Other = Other.Next;
}
System.out.println ();
}
}
}