On m'a interrogé sur la liste liée récemment et un ami l'a dit en discutant de Java avec moi. Pour être honnête, j'ai appris très peu au cours de la dernière année, j'ai appris la programmation. J'ai appris Java et C # dans les langues, et j'ai appris un peu sur HTML + CSS + JavaScript sur le Web. Parce que je le préfère, je suis plus sérieux quand j'apprends Winform, et j'ai moi-même étudié les opérations de base de données. Mais je n'ai jamais étudié ni étudié la liste liée. De plus, j'ai lu WPF récemment et le cours a atteint JSP, qui est relativement serré.
Mais j'ai encore pris une nuit et une demi-journée pour regarder la liste liée à sens unique. Et j'ai essayé d'écrire un exemple en utilisant Java. Les amis qui n'ont pas été exposés à la liste liée peuvent l'utiliser comme référence. J'espère que vous donnerez des suggestions plus précieuses.
Expliquons d'abord ce qu'est une liste liée. Pour autant que je sache, une liste liée est une structure de données, qui est au même niveau qu'un tableau. Par exemple, le principe d'implémentation de ArrayList que nous utilisons en Java est le tableau. Le principe d'implémentation de LinkedList est lié. Mon professeur a dit que les listes liées ne sont pas efficaces lors de la circulation, mais ont des avantages évidents lors de l'insertion et de la suppression. Ensuite, il a plus de dix ans d'expérience en programmation, je le crois. Mais je ne sais pas s'il parle de listes liées bidirectionnelles. Nous sommes ici pour ne comprendre que des listes liées unidirectionnelles.
Les listes liées (chaîne mentionnée dans cet article sont toutes des listes liées unidirectionnelles, et les listes liées unidirectionnelles suivantes) sont en fait composées de nœuds (nœuds), et une liste liée a un nombre incertain de nœuds. Il n'y a qu'un seul nœud de tête (tête) exposé vers l'extérieur, et toutes nos opérations sur la liste liée sont effectuées directement ou indirectement via son nœud de tête.
Un nœud est composé d'un objet qui doit être stocké et d'une référence au nœud suivant. Autrement dit, un nœud a deux membres: un objet stocké, une référence au nœud suivant.
Vous pouvez ne pas comprendre cela très bien, et il peut être plus facile pour vous de comprendre si je publie une image.
Les codes clés pour l'implémentation des opérations de base des listes liées uniquement Java sont les suivantes:
package com.tyxh.link; // Node classe publique classe node {nœud protégé suivant; // Pointer Field Protected Int Data; // Data Field Public Node (int data) {this. data = données; } // montre ce nœud public void affiche () {Système. out.print (données + ""); }} package com.tyxh.link; // Liste unique de classe publique LinkList {Node public First; // Définissez un en-tête privé int pos = 0; // l'emplacement du nœud public linkList () {this. d'abord = null; } // insérer un nœud de tête public void addFirstNode (int data) {node node = new node (data); nœud. suivant = premier; d'abord = nœud; } // Supprimer un nœud de tête et renvoyer le nœud public de tête deleteFirstNode () {node tempnode = premier; d'abord = tempnode. suivant; retour tempnode; } // insérer un nœud à n'importe quel emplacement et insérer public void après index add (int index, int data) {node node = new nœud (data); Courant de nœud = premier; Node précédent = premier; while (pos! = index) {PREBL = Current; courant = courant. suivant; pos ++; } nœud. suivant = courant; précédent. NEXT = NODE; pos = 0; } // Supprimer les nœuds à n'importe quel emplacement Node public DeleteBypos (int index) {Node Current = First; Node précédent = premier; while (pos! = index) {pos ++; Précédent = courant; courant = courant. suivant; } if (current == premier) {premier = premier. suivant; } else {pos = 0; précédent. suivant = courant. suivant; } Retour courant; } // Supprimer le nœud en fonction des données du nœud (supprimez uniquement le premier) Node public DeleteByData (int data) {nœud current = premier; Node précédent = premier; // N'oubliez pas le nœud précédent while (actuel. Data! = Data) {if (current. Next == null) {return null; } précédent = courant; courant = courant. suivant; } if (current == premier) {premier = premier. suivant; } else {précédent. suivant = courant. suivant; } Retour courant; } // Afficher toutes les informations de nœud public void displayallNodes () {nœud current = premier; while (current! = null) {current.display (); courant = courant. suivant; } Système. out.println (); } // recherche d'informations de nœud basées sur l'emplacement du nœud public findBypos (int index) {nœud current = premier; if (pos! = index) {current = courant. suivant; pos ++; } Retour courant; } // trouver des informations de nœud basées sur des données noeud public findByData (int data) {nœud current = premier; while (actuel. data! = data) {if (current. next == null) renvoie null; courant = courant. suivant; } Retour courant; }} package com.tyxh.link; // classe de test 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 ("Node:" + Node.data); // linkList.displayAllNodes (); // node = linkList.DeleteBypos (2); // System.out.println ("Node:" + Node.data); // linkList.displayAllNodes (); // linkList.DeleteFirstNode (); Node node = linkList.deleteByData (19); // node node = linkList.deleteBypos (0); Système. out.println ("nœud:" + nœud. data); linkList.displayAllNodes (); Node node1 = linkList.FindBypos (0); Système. Out.println ("Node1:" + Node1. Data); Node node2 = linkList.findByData (22); Système. out.println ("node2:" + node2. data); }}Ce qui précède est la mise en œuvre des opérations de base des listes uniquement liées Java qui vous sont présentées par l'éditeur. J'espère que cela vous sera utile. Si vous avez des questions, veuillez me laisser un message et l'éditeur vous répondra à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!