Wenn sich das Frühlingsfest nähert, ist das Projekt vorbei und wir alle warten darauf, für das neue Jahr nach Hause zu gehen. Nachfolgend finden Sie das relevante Wissen über den Editor, der die Datenstruktur für Sie untersucht. Die verknüpfte Liste ist eine Datenstruktur, die häufig verwendet wird. Jetzt werde ich meine eigene Implementierung wie folgt zeigen. Willkommen bei The Great Meister um Rat.
Die erste Version hat keinen letzten Knoten, und sie beginnt jedes Mal aus dem Stammknoten zu überqueren
öffentliche Klasse LinkedList <E> {privater Knotenkopf; public linkedList () {} public e getfirst () {if (head == null) {return null;} return Head.Value; e) {node lst = head; if (lst == null) {this.head = new node (e, null, null); return this;} else {while (true) {if (lst.next == null) {break;} else {lst = lst.next; LinkedList <E> entfernen (e e) {node lst = head; if (lst == null) {neue nullpointerexception ("Die LinkedList ist leer.");} Else {while (true) {if (e.equals (lst.Value)) {// Entfernen Sie dieses Element entfernen dieses Element entfernen Sie dieses Element entfernen if (lst.pre! = null) {lst.pre.next = lst.next;} if (lst.next! StringBuffer ("["); Knoten lst = this.head; while (lst! Wert, Knoten vor, Knoten als nächstes) {this.Value = value; this.pre = pre; this.next = next;}}}Die zweite Version hat den letzten Knoten
öffentliche Klasse LinkedList <E> {privater Knotenkopf; privater Knoten letztes; public linkedList () {} public e getfirst () {if (head == null) {return null;} return head e) {head.pre = neuer Knoten (e, null, head); head = head.pre; zurück; this.head = this.last; return this;} else {while (true) {if (lst.next == null) {// break;} else {lst = lst.next;}} lst.next = new node (e, lst, null); lst = head; if (lst == null) {neue nullpointerexception ("Die verknüpfte Liste ist leer.");} else {while (true) {if (e.equals (lst.value)) {// Entfernen Sie dieses Element if (lst.pre! = null) {lst.pre.next = lst.next;} if (lst.next! StringBuffer ("["); Knoten lst = this.head; while (lst! Wert, Knoten vor, Knoten als nächstes) {this.Value = value; this.pre = pre; this.next = next;}}}Hinweis: Keine der beiden oben genannten Versionen berücksichtigt die Verwendung unter Multithreading.
Das oben genannte ist das relevante Wissen über die Implementierung bidirektionaler verknüpfter Listen (zwei Versionen), die Ihnen vom Editor vorgestellt wurden. Ich hoffe, es wird Ihnen hilfreich sein.