Ich wurde kürzlich nach der verlinkten Liste gefragt und ein Freund sagte es, als ich über Java mit mir sprach. Um ehrlich zu sein, habe ich im vergangenen Jahr sehr wenig gelernt, dass ich Programmierung gelernt habe. Ich habe Java und C# in Sprachen gelernt und ein wenig über HTML+CSS+JavaScript über das Web gelernt. Da ich es bevorzuge, meine ich ernsthafter, wenn ich WinForm lerne, und ich habe selbst Datenbankoperationen studiert. Aber ich habe die verknüpfte Liste noch nie studiert oder studiert. Darüber hinaus habe ich in letzter Zeit WPF gelesen und der Kurs hat JSP erreicht, was relativ eng ist.
Aber ich habe mir immer noch einen halben Tag genommen, um mir die einseitige verlinkte Liste anzusehen. Und ich habe versucht, ein Beispiel mit Java zu schreiben. Freunde, die nicht der verlinkten Liste ausgesetzt waren, können sie als Referenz verwenden. Ich hoffe, Sie geben wertvollere Vorschläge.
Erklären wir zunächst, was eine verknüpfte Liste ist. Soweit ich weiß, ist eine verknüpfte Liste eine Datenstruktur, die sich auf dem gleichen Niveau wie ein Array befindet. Zum Beispiel ist das Implementierungsprinzip von ArrayList, das wir in Java verwenden, Array. Das Implementierungsprinzip der LinkedList ist eine verknüpfte Liste. Mein Lehrer sagte, dass verknüpfte Listen im Umlauf nicht effizient sind, aber beim Einfügen und Löschen offensichtliche Vorteile haben. Dann hat er mehr als zehn Jahre Programmerfahrung, ich glaube es. Aber ich weiß nicht, ob er über zweiwege verlinkte Listen spricht. Wir sind hier, um nur eine einseitige verknüpfte Listen zu verstehen.
Verbindete Listen (in diesem Artikel erwähnte Kette sind alle unidirektionale verknüpfte Listen, und die folgenden werden alle als unidirektionale verknüpfte Listen bezeichnet) werden tatsächlich aus Knoten (Knoten) bestehen, und eine verknüpfte Liste hat eine ungewisse Anzahl von Knoten. Es gibt nur einen Kopfknoten (Kopf) nach außen, und alle unsere Operationen auf der verknüpften Liste werden direkt oder indirekt über den Kopfknoten durchgeführt.
Ein Knoten besteht aus einem Objekt, das gespeichert werden muss, und ein Hinweis auf den nächsten Knoten. Das heißt, ein Knoten hat zwei Mitglieder: ein gespeichertes Objekt, ein Verweis auf den nächsten Knoten.
Möglicherweise verstehen Sie das nicht sehr gut, und es kann für Sie einfacher zu verstehen, wenn ich ein Bild poste.
Die wichtigsten Codes für die Implementierung grundlegender Operationen von Java -Single -verknüpften Listen sind wie folgt:
Paket com.tyxh.link; // Knotenklasse öffentliche Klasse Node {geschützter Knoten als nächstes; // Zeigerfeld geschützte Int -Daten; // Datenfeld öffentlicher Knoten (int data) {this. Daten = Daten; } // Zeigen Sie diesen Knoten public void display () {System. out.print (Daten + ""); }} Paket com.tyxh.link; // Single-Linked List Public Class LinkList {öffentlicher Knoten zuerst; // Definieren Sie einen Header Private int pos = 0; // Der Ort des Knotens Public LinkList () {this. zuerst = null; } // Einen Kopfknoten public void addfirstnode (int data) {node node = new node (data); Knoten. Weiter = zuerst; first = node; } // einen Kopfknoten löschen und den Kopfknoten öffentlicher Knoten deleteFirstnode () {Knoten tempnode = zuerst; first = tempnode. nächste; Tempnode zurückgeben; } // Einen Knoten an einem beliebigen Ort einfügen und public void nach index add (int index, int data) einfügen {node node = new node (data); Knotenstrom = zuerst; Knoten vorher = zuerst; while (pos! = index) {vorher = aktuell; Strom = Strom. nächste; pos ++; } Knoten. Weiter = Strom; vorherige. next = node; pos = 0; } // Knoten an einem beliebigen Ort öffentlicher Knoten DeleteBypos (int Index) {Knoten current = First; Knoten vorher = zuerst; while (pos! = index) {pos ++; vorher = Strom; Strom = Strom. nächste; } if (current == zuerst) {First = First. nächste; } else {pos = 0; vorherige. Weiter = Strom. nächste; } Return Current; } // Löschen Sie den Knoten gemäß den Daten des Knotens (nur den ersten löschen). Knoten vorher = zuerst; // Erinnere dich an den vorherigen Knoten, während (aktuell. Daten! } vorher = Strom; Strom = Strom. nächste; } if (current == zuerst) {First = First. nächste; } else {vorher. Weiter = Strom. nächste; } Return Current; } // Alle Knoteninformationen public void displayAllnodes () {Knoten current = First; while (current! = null) {current.display (); Strom = Strom. nächste; } System. out.println (); } // Knoteninformationen basierend auf dem Standort öffentlicher Knoten findbypos (int Index) {Knoten current = First; if (pos! = index) {current = current. nächste; pos ++; } Return Current; } // Knoteninformationen basierend auf Daten öffentlicher Knoten findByData (int data) {node current = First; while (current. data! = data) {if (aktuell. next == null) return null; Strom = Strom. nächste; } Return Current; }} Paket com.tyxh.link; // Klasse public class testlinkList {public static void main (string [] args) {linkList linkList = new linkList (); linkList.addfirstnode (20); linkList.addfirstnode (21); linkList.addfirstnode (19); // 19,21,20 linkList.add (1, 22); // 19,22,21,20 linkList.add (2, 23); // 19,22,23,21,20 linkList.add (3, 99); // 19,22,23,99,21,20 linkList.displayAllnodes (); // node node = linkList.deletefirstnode (); // system.out.println ("Knoten:" + node.data); // linkList.displayAllnodes (); // node = linkList.deletebypos (2); // system.out.println ("Knoten:" + node.data); // linkList.displayAllnodes (); // linkList.deletefirstnode (); Node node = linkList.deleteByData (19); // node node = linkList.deletebypos (0); System. out.println ("Knoten:" + Knoten. Daten); linkList.displayAllnodes (); Node node1 = linkList.findbypos (0); System. out.println ("node1:" + node1. data); Node node2 = linkList.findbyData (22); System. out.println ("node2:" + node2. data); }}Die oben genannte Implementierung der grundlegenden Operationen von Java -Single -verknüpften Listen, die Ihnen vom Editor vorgestellt wurden. Ich hoffe, es wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird Ihnen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!