Recientemente me preguntaron sobre la lista vinculada y un amigo lo dijo al hablar de Java conmigo. Para ser honesto, he aprendido muy poco en el último año que aprendí programación. Aprendí Java y C# en idiomas, y aprendí un poco sobre HTML+CSS+JavaScript sobre la web. Debido a que lo prefiero, soy más serio al aprender WinForm, y he estudiado operaciones de base de datos yo mismo. Pero nunca he estudiado o estudiado la lista vinculada. Además, he estado leyendo WPF recientemente y el curso ha alcanzado JSP, que es relativamente ajustado.
Pero todavía tomé una noche y medio día para mirar la lista vinculada unidireccional. Y traté de escribir un ejemplo usando Java. Los amigos que no han estado expuestos a la lista vinculada pueden usarlo como referencia. Espero que den sugerencias más valiosas.
Primero explicemos qué es una lista vinculada. Hasta donde yo sé, una lista vinculada es una estructura de datos, que está en el mismo nivel que una matriz. Por ejemplo, el principio de implementación de ArrayList que usamos en Java es una matriz. El principio de implementación de LinkedList es Linked List. Mi maestro dijo que las listas vinculadas no son eficientes cuando circulan, pero tienen ventajas obvias al insertar y eliminar. Entonces tiene más de diez años de experiencia en programación, lo creo. Pero no sé si está hablando de listas vinculadas de dos vías. Estamos aquí para comprender solo listas vinculadas unidireccionales.
Las listas vinculadas (la cadena mencionada en este artículo son listas vinculadas unidireccionales, y las siguientes se denominan listas vinculadas unidireccionales) están realmente compuestas de nodos (nodos), y una lista vinculada tiene un número incierto de nodos. Solo hay un nodo de cabeza (cabeza) expuesto hacia afuera, y todas nuestras operaciones en la lista vinculada se realizan directa o indirectamente a través de su nodo principal.
Un nodo está compuesto por un objeto que debe almacenarse y una referencia al siguiente nodo. Es decir, un nodo tiene dos miembros: un objeto almacenado, una referencia al siguiente nodo.
Es posible que no lo entienda muy bien, y puede ser más fácil para usted entender si publico una foto.
Los códigos clave para implementar operaciones básicas de las listas vinculadas de Java son los siguientes:
paquete com.tyxh.link; // Node Clase Public Class Node {Nodo protegido Siguiente; // Puntinter Field Proteged int data; // Data Field Public Node (int data) {esto. datos = datos; } // Mostrar este nodo public void display () {sistema. out.print (datos + ""); }} paquete com.tyxh.link; // LISTA PÚBLICA LINGLISTA Public Class LinkList {Public Node First; // Definir un encabezado privado int pos = 0; // La ubicación del nodo público linklist () {this. primero = nulo; } // Inserte un nodo de nodo Head void addFirstNode (int data) {nodo nodo = new Node (data); nodo. siguiente = primero; Primero = nodo; } // Eliminar un nodo de cabeza y devuelva el nodo del nodo del cabezal deleTeLeFirstNode () {nodo tempnode = primero; Primero = tempnode. próximo; return tempnode; } // Inserte un nodo en cualquier ubicación e inserte public void después del índice add (int index, int data) {nodo nodo = new nodo (datos); Nodo corriente = primero; Nodo anterior = primero; while (pos! = index) {anterior = current; corriente = corriente. próximo; pos ++; } nodo. siguiente = actual; anterior. next = nodo; pos = 0; } // Eliminar nodos en cualquier ubicación nodo público deletebypos (int index) {nodo current = primero; Nodo anterior = primero; while (pos! = index) {pos ++; anterior = corriente; corriente = corriente. próximo; } if (actual == primero) {primero = primero. próximo; } else {pos = 0; anterior. Siguiente = actual. próximo; } retorno actual; } // Elimine el nodo de acuerdo con los datos del nodo (solo elimine el primero) nodo público deletyData (int data) {nodo current = fRIf primero; Nodo anterior = primero; // Recuerde el nodo anterior while (actual. Data! = Data) {if (current. Next == null) {return null; } anterior = actual; corriente = corriente. próximo; } if (actual == primero) {primero = primero. próximo; } else {anterior. Siguiente = actual. próximo; } retorno actual; } // Mostrar toda la información del nodo public void displayAllnodes () {nodo current = first; while (current! = null) {current.display (); corriente = corriente. próximo; } Sistema. out.println (); } // Encuentra información de nodo basada en la ubicación Node public FindByPos (int index) {nodo current = primero; if (pos! = index) {actual = corriente. próximo; pos ++; } retorno actual; } // Encuentre información de nodo basada en Data public nodo FindByData (int data) {nodo current = primero; while (actual. data! = data) {if (current. next == null) return null; corriente = corriente. próximo; } retorno actual; }} paquete com.tyxh.link; // Test Class Class public 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 (); // nodo nodo = linklist.deleteFirstNode (); // system.out.println ("nodo:" + node.data); // Linklist.DisplayAllNodes (); // node = LinkList.DeleteByPos (2); // system.out.println ("nodo:" + node.data); // Linklist.DisplayAllNodes (); // LinkList.DeleteFirstNode (); Nodo nodo = linklist.deleteByData (19); // nodo nodo = linklist.deleteByPos (0); Sistema. out.println ("nodo:" + nodo. data); LinkList.DisplayAllNodes (); Nodo nodo1 = linklist.findbypos (0); Sistema. out.println ("node1:" + node1. data); Nodo nodo2 = linklist.findbydata (22); Sistema. out.println ("node2:" + node2. data); }}Lo anterior es la implementación de las operaciones básicas de las listas vinculadas de Java Single presentadas por el editor. Espero que te sea útil. Si tiene alguna pregunta, déjame un mensaje y el editor le responderá a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!