Кода -копия выглядит следующим образом:
/**
* Внедрение двусторонних связанных списков
* @author Skip
* @version 1.0
*/
открытый класс Doublenodelist <t> {
// Узел класс
Частный статический класс -узлы <t> {
Узел <t> perv; // передний узел
Узел <T> Далее; // последний узел
T данные; // Данные
Публичный узел (T T) {
this.data = t;
}
}
Приватный узел <T> Head; // Голова узла
Частный узел <T> последний; // Хвостовой узел
Частный узел <T> другой; // Временная работа для хранения резервных узлов
private int length; // длина связанного списка
/**
* Не гликопическая структура
*/
public Doublenodelist () {
Head = новый узел <t> (null);
Последняя = голова;
длина = 0;
}
/**
* Создать узел во время инициализации
* @param данные
*/
public Doublenodelist (t data) {
Head = новый узел <T> (data);
Последняя = голова;
длина = 1;
}
/**
* Добавить узел
* @param Данные добавлены данные
*/
public void add (t data) {
if (isempty ()) {
Head = новый узел <T> (data);
Последняя = голова;
длина ++;
}еще{
// Метод вставки хвоста
другой = новый узел <t> (data);
Другое. Perv = последний;
Last.next = Другое;
Последний = другой;
длина ++;
}
}
/**
* Вставьте узел после указания данных
* @param Data Data Data
* @param insertdata вставленные данные
* @return вернуть true, если вставка успешна, ложь, если вставка неудачна.
*/
public boolean addafert (t data, t insertdata) {
Другое = голова;
while (другой! = null) {
if (orhy.data.equals (data)) {
Узел <T> t = новый узел <T> (inSertData);
t.perv = Другое;
t.next = oreth.next;
Другое.next = t;
// судить, добавлять ли узлы после последнего узла
if (t.next == null) {
последний = t;
}
длина ++;
вернуть истину;
}
Другое = Другое.next;
}
вернуть ложь;
}
/**
* Вставьте узел перед указанием данных
* @param Data Data Data
* @param insertdata вставленные данные
* @return вернуть true, если вставка успешна, ложь, если вставка не удастся.
*/
public boolean addbefore (t data, t insertdata) {
Другое = голова;
while (другой! = null) {
if (orhy.data.equals (data)) {
Узел <T> t = новый узел <T> (inSertData);
t.perv = ore.perv;
t.next = Другое;
Другое.perv.next = t;
длина ++;
вернуть истину;
}
Другое = Другое.next;
}
вернуть ложь;
}
/**
* Получите данные в индексе
* @param индекс индекса
* @return Data
*/
public t получить (int index) {
if (index> длина || index <0) {
бросить новый indexoutofboundsexception ("index:"+index);
}
Другое = голова;
для (int i = 0; i <index; i ++) {
Другое = Другое.next;
}
вернуть другие.data;
}
/**
* Новое значение заменяет старое значение
* @return успех правда, не найден как ложный
*/
Общественный логический набор (t oldvalue, t newvalue) {
Другое = голова;
while (другой! = null) {
if (orhy.data.equals (oldvalue)) {
Другое.data = newValue;
вернуть истину;
}
Другое = Другое.next;
}
вернуть ложь;
}
/**
* Удалите указанный элемент
* @param элементы данных, которые необходимо удалить
* @return не существует и верно для успеха
*/
public boolean remove (t data) {
Другое = голова;
while (другой! = null) {
if (orhy.data.equals (data)) {
Другое.perv.next = ore.next;
длина--;
вернуть истину;
}
Другое = Другое.next;
}
вернуть ложь;
}
/**
* Включен ли этот элемент в связанный список
* @return включен как правда, а не ложь
*/
Public Boolean содержит (t data) {
Другое = голова;
while (другой! = null) {
if (orhy.data.equals (data)) {
вернуть истину;
}
Другое = Другое.next;
}
вернуть ложь;
}
/**
* Получите данные последнего узла
* @return Данные последнего узла
*/
public t getlast () {
вернуть последний. Дата;
}
/**
* Получить данные первого узла
* @return Данные первого узла
*/
public t getfirst () {
return Head.data;
}
/**
* Получите длину связанного списка
* @return длины
*/
public int getSize () {
Длина возврата;
}
/**
* Это пустая таблица ссылок
* @return Пустой список верно, а непустые списки ложны
*/
public boolean isempty () {
Длина возврата == 0;
}
/**
* Очистить список ссылок
*/
public void clear () {
голова = null;
длина = 0;
}
/**
* Вывод всех узлов в связанном списке
*/
public void printlist () {
if (isempty ()) {
System.out.println ("Пустое связанное список");
}еще{
Другое = голова;
для (int i = 0; i <length; i ++) {
System.out.print (другие.data+"");
Другое = Другое.next;
}
System.out.println ();
}
}
}