Die Codekopie lautet wie folgt:
/**
* Implementierung von wechselseitigen verknüpften Listen
* @Author überspringen
* @Version 1.0
*/
Public Class Doublenodelist <t> {
// Knotenklasse
private statische Klassenknoten <t> {
Knoten <T> perver; // Frontknoten
Knoten <T> Weiter; // letzter Knoten
T Daten; // Daten
öffentlicher Knoten (t t) {
this.data = t;
}
}
privater Knoten <T> Kopf; // Kopfknoten
privater Knoten <t> letztes; // Schwanzknoten
private Knoten <t> Andere; // Temporäre Betrieb zur Speicherung von Standby -Knoten
Private int Länge; // Länge der verknüpften Liste
/**
* Nicht-Glycopic-Struktur
*/
public DouBlenodelist () {
head = neuer Knoten <t> (null);
last = Kopf;
Länge = 0;
}
/**
* Erstellen Sie während der Initialisierung einen Knoten
* @param Daten
*/
public doublenodelist (t data) {
head = neuer Knoten <T> (Daten);
last = Kopf;
Länge = 1;
}
/**
* Fügen Sie einen Knoten hinzu
* @Param -Daten wurden Daten hinzugefügt
*/
public void add (t data) {
if (isempty ()) {
head = neuer Knoten <T> (Daten);
last = Kopf;
Länge ++;
}anders{
// Schwanzinsertionsmethode
andere = neuer Knoten <T> (Daten);
other.perv = last;
last.Next = andere;
last = andere;
Länge ++;
}
}
/**
* Fügen Sie einen Knoten nach Angabe von Daten ein
* @Param -Daten angegebene Daten
* @param InsertData eingefügte Daten
* @return return true, wenn die Einfügung erfolgreich ist, falsch, wenn die Einfügung erfolglos ist.
*/
public boolean addaffert (t data, t insertData) {
andere = Kopf;
while (other! = null) {
if (other.data.equals (Daten)) {
Knoten <T> T = neuer Knoten <T> (InsertData);
T.Perv = andere;
T.Next = other.Next;
andere.Next = t;
// Beurteile, ob nach dem letzten Knoten Knoten hinzugefügt werden soll
if (t.next == null) {
last = t;
}
Länge ++;
zurückkehren;
}
Andere = andere.Next;
}
false zurückgeben;
}
/**
* Fügen Sie einen Knoten vor, bevor Sie Daten angeben
* @Param -Daten angegebene Daten
* @param InsertData eingefügte Daten
* @return return true, wenn die Einfügung erfolgreich ist, falsch, wenn die Einfügung erfolglos ist.
*/
public boolean addbefore (t data, t insertData) {
andere = Kopf;
while (other! = null) {
if (other.data.equals (Daten)) {
Knoten <T> T = neuer Knoten <T> (InsertData);
t.perv = other.perv;
T.Next = Andere;
other.perv.Next = t;
Länge ++;
zurückkehren;
}
Andere = andere.Next;
}
false zurückgeben;
}
/**
* Holen Sie sich die Daten im Index
* @param Index Index
* @Return Daten
*/
public t Get (int Index) {
if (index> länge || index <0) {
Neue IndexoutOfBoundSexception ("Index:"+Index);
}
andere = Kopf;
für (int i = 0; i <index; i ++) {
Andere = andere.Next;
}
kehre andere zurück.data;
}
/**
* Neuer Wert ersetzt den alten Wert
* @return Erfolg ist wahr, nicht als falsch gefunden
*/
public boolean set (t OldValue, t NewValue) {
andere = Kopf;
while (other! = null) {
if (other.data.equals (OldValue)) {
other.data = newValue;
zurückkehren;
}
Andere = andere.Next;
}
false zurückgeben;
}
/**
* Entfernen Sie das angegebene Element
* @Param -Datenelemente, die entfernt werden müssen
* @Return existiert nicht und gilt für den Erfolg
*/
public boolean entfernen (t data) {
andere = Kopf;
while (other! = null) {
if (other.data.equals (Daten)) {
other.perv.next = other.next;
Länge--;
zurückkehren;
}
Andere = andere.Next;
}
false zurückgeben;
}
/**
* Ob dieses Element in der verlinkten Liste enthalten ist
* @return als wahr eingeschlossen, nicht falsch
*/
public boolean enthält (t data) {
andere = Kopf;
while (other! = null) {
if (other.data.equals (Daten)) {
zurückkehren;
}
Andere = andere.Next;
}
false zurückgeben;
}
/**
* Holen Sie sich die Daten des letzten Knotens
* @return Daten des letzten Knotens
*/
public t getLast () {
Rückkehr last.data;
}
/**
* Erhalten Sie die Daten des ersten Knotens
* @return die Daten des ersten Knotens
*/
public t getfirst () {
Return Head.Data;
}
/**
* Erhalten Sie die Länge der verlinkten Liste
* @return Länge
*/
public int getSize () {
Rücklauflänge;
}
/**
* Ist es eine leere Link -Tabelle
* @return Die leere Liste ist wahr, und die nicht leere Liste ist falsch
*/
public boolean isempty () {
Rücklauflänge == 0;
}
/**
* Löschen Sie die Linkliste
*/
public void clear () {
Kopf = null;
Länge = 0;
}
/**
* Ausgeben alle Knoten in der verlinkten Liste
*/
public void printlist () {
if (isempty ()) {
System.out.println ("leere verlinkte Liste");
}anders{
andere = Kopf;
für (int i = 0; i <länge; i ++) {
System.out.print (other.data+"");
Andere = andere.Next;
}
System.out.println ();
}
}
}