La copia del código es la siguiente:
/**
* Implementación de listas vinculadas de dos vías
* @author omitir
* @version 1.0
*/
clase pública DoubeDeList <t> {
// clase de nodo
Nodo de clase estática privada <T> {
Nodo <t> perv; // nodo frontal
Nodo <t> siguiente; // Último nodo
T datos; // datos
nodo público (t t) {
this.data = t;
}
}
nodo privado <t> head; // nodo de cabeza
nodo privado <t> last; // nodo de cola
Nodo privado <t> otro; // operación temporal para el almacenamiento de nodos de espera
Longitud de intivate int; // Longitud de la lista vinculada
/**
* Estructura no glicópica
*/
public DoubleNodeList () {
cabeza = nuevo nodo <t> (nulo);
último = cabeza;
longitud = 0;
}
/**
* Crear un nodo durante la inicialización
* @param datos
*/
DoubeDeList público (datos t) {
head = nuevo nodo <t> (datos);
último = cabeza;
longitud = 1;
}
/**
* Agregar un nodo
* @param datos agregados datos
*/
public void add (t data) {
if (isEmpty ()) {
head = nuevo nodo <t> (datos);
último = cabeza;
longitud ++;
}demás{
// Método de inserción de la cola
otro = nuevo nodo <t> (datos);
otro.PERV = Last;
Last.next = otro;
último = otro;
longitud ++;
}
}
/**
* Inserte un nodo después de especificar datos
* @Param Data Datos especificados
* @param insertData datos insertados
* @return return true Si la inserción es exitosa, falsa si la inserción no tiene éxito.
*/
public boolean addafert (t data, t insertData) {
otro = cabeza;
while (otro! = null) {
if (otro.data.equals (data)) {
Nodo <t> t = nuevo nodo <t> (insertData);
t.PERV = OTRO;
t.next = otro.next;
otro.next = t;
// juzga si agregar nodos después del último nodo
if (t.next == null) {
último = t;
}
longitud ++;
devolver verdadero;
}
otro = otro.next;
}
devolver falso;
}
/**
* Insertar un nodo antes de especificar datos
* @Param Data Datos especificados
* @param insertData datos insertados
* @return return true Si la inserción es exitosa, falsa si la inserción no tiene éxito.
*/
public boolean addbefore (t data, t insertData) {
otro = cabeza;
while (otro! = null) {
if (otro.data.equals (data)) {
Nodo <t> t = nuevo nodo <t> (insertData);
t.PERV = OTRO.PERV;
t.next = otro;
otro.PERV.NEXT = t;
longitud ++;
devolver verdadero;
}
otro = otro.next;
}
devolver falso;
}
/**
* Obtenga los datos en el índice
* @Param ÍNDICE ÍNDICE
* @Datos de retornos
*/
public t get (int index) {
if (index> longitud || índice <0) {
tirar el nuevo índiceutoutOfBoundSexception ("índice:"+índice);
}
otro = cabeza;
para (int i = 0; i <index; i ++) {
otro = otro.next;
}
devolver otros. Data;
}
/**
* Nuevo valor reemplaza el valor antiguo
* @return el éxito es verdadero, no encontrado como falso
*/
set público booleano (t OldValue, t NewValue) {
otro = cabeza;
while (otro! = null) {
if (otro.data.equals (OldValue)) {
otro.data = newValue;
devolver verdadero;
}
otro = otro.next;
}
devolver falso;
}
/**
* Eliminar el elemento especificado
* @param elementos de datos que deben eliminarse
* @return no existe y es cierto para el éxito
*/
Public Boolean Eliminar (T Data) {
otro = cabeza;
while (otro! = null) {
if (otro.data.equals (data)) {
OTRO.PERV.NEXT = OTRO.NEXT;
longitud--;
devolver verdadero;
}
otro = otro.next;
}
devolver falso;
}
/**
* Si este elemento está incluido en la lista vinculada
* @return incluido como verdadero, no falso
*/
Public Boolean contiene (t Data) {
otro = cabeza;
while (otro! = null) {
if (otro.data.equals (data)) {
devolver verdadero;
}
otro = otro.next;
}
devolver falso;
}
/**
* Obtenga los datos del último nodo
* @Datos de retorno del último nodo
*/
public t getLast () {
regresar last.data;
}
/**
* Obtener los datos del primer nodo
* @return los datos del primer nodo
*/
public t getFirst () {
devuelve head.data;
}
/**
* Obtenga la longitud de la lista vinculada
* @return longitud
*/
public int getsize () {
longitud de retorno;
}
/**
* ¿Es una tabla de enlace vacía?
* @return La lista vacía es verdadera, y la lista no vacía es falsa
*/
Public boolean isEtimty () {
Longitud de retorno == 0;
}
/**
* Borrar la lista de enlaces
*/
public void clear () {
cabeza = nulo;
longitud = 0;
}
/**
* ENTREGA TODOS LOS NODOS EN LA LISTA LINGNADA
*/
public void printList () {
if (isEmpty ()) {
System.out.println ("Lista vinculada vacía");
}demás{
otro = cabeza;
para (int i = 0; i <longitud; i ++) {
System.out.print (Other.Data+"");
otro = otro.next;
}
System.out.println ();
}
}
}