Кода -копия выглядит следующим образом:
/**
* Связанный список одностороннего движения
*
*/
Nodelist Public Class <e> {
Приватный статический класс -узел <e> {// класс узлов
E Данные; // Данные на узле
Узел <e> Далее;
Узел (e e) {
this.data = e;
this.next = null;
}
}
Приватный узел <e> Head;
Приватный узел <e> последний;
Частный узел <e> Другой = null;
private int длина = 0; // Количество узлов
/**
* Метод непараметрического строительства
*/
public nodelist () {
// Узел по умолчанию пуст
this.head = новый узел <e> (null);
}
/**
* Создать узел во время инициализации
*
* @param данные
* данные
*/
public nodelist (e data) {
this.head = новый узел <e> (data);
this.last = Head;
длина ++;
}
/**
* Добавить узел (метод вставки хвоста)
*
* @param данные
* данные
*/
public void add (e data) {
if (isempty ()) {
Head = новый узел <e> (data);
Последняя = голова;
длина ++;
} еще {
Узел <e> newnode = new Node <e> (data);
last.next = newnode;
последний = newNode;
}
}
/**
* Получите данные в индексе (ошибка ввода индекса бросает исключение из-за борьбы)
* @param индекс индекса
* @return Данные в индексе
*/
public E Get (int index) {
if (index <0 || index> length) {
бросить новый indexoutofboundsexception ("index:"+index);
}
Другое = голова;
для (int i = 0; i <index; i ++) {
Другое = Другое.next;
}
вернуть другие.data;
}
/**
* Новое значение заменяет старое значение
* @return успех правда, не найден как ложный
*/
Общественный логический набор (E oldvalue, e newvalue) {
Другое = голова;
while (другой! = null) {
if (orhy.data.equals (oldvalue)) {
Другое.data = newValue;
вернуть истину;
}
Другое = Другое.next;
}
вернуть ложь;
}
/**
* Вставьте элемент после указания элемента
*
* @param данные
* Указанный элемент
* @param insertdata
* Элементы, которые необходимо вставить
* @return false is element не найден, True - это успешно вставка
*/
public boolean add (e data, e insertdata) {
Другое = голова;
while (другой! = null) {
if (orhy.data.equals (data)) {
Узел <e> newnode = new Node <e> (insertData);
Узел <e> temp = ore.next;
newnode.next = temp;
Другое.next = newNode;
длина ++;
вернуть истину;
}
Другое = Другое.next;
}
вернуть ложь;
}
/**
* Включен ли этот элемент в связанный список
* @return включен как правда, а не ложь
*/
Public Boolean содержит (E Data) {
Другое = голова;
while (другой! = null) {
if (orhy.data.equals (data)) {
вернуть истину;
}
Другое = Другое.next;
}
вернуть ложь;
}
/**
* Удалите указанный элемент
* @param элементы данных, которые необходимо удалить
* @return не существует и верно для успеха
*/
public boolean remove (e data) {
Другое = голова;
Узел <e> temp = head; // временная переменная, используемая для сохранения предыдущего узла
while (другой! = null) {
if (orhy.data.equals (data)) {
temp.next = oreth.next;
длина--;
вернуть истину;
}
темп = другой;
Другое = Другое.next;
}
вернуть ложь;
}
/**
* Определите, пуст ли связанный список
*
* @return пусто-это правда, непустые ложно
*/
public boolean isempty () {
Длина возврата == 0;
}
/**
* Очистить список ссылок
*/
public void clear () {
this.head = null;
this.length = 0;
}
/**
* Вывод всех узлов
*/
public void printlink () {
if (isempty ()) {
System.out.println ("Пустое связанное список");
}еще{
Другое = голова;
while (другой! = null) {
System.out.print (другие.data);
Другое = Другое.next;
}
System.out.println ();
}
}
}