Fui perguntado sobre a lista vinculada recentemente e um amigo disse isso ao discutir Java comigo. Para ser sincero, aprendi muito pouco no ano passado que aprendi a programação. Aprendi Java e C# em idiomas e aprendi um pouco sobre HTML+CSS+JavaScript sobre a Web. Porque eu prefiro, sou mais sério ao aprender Winform e estudei operações de banco de dados. Mas nunca estudei ou estudei a lista vinculada. Além disso, tenho lido o WPF recentemente e o curso atingiu o JSP, o que é relativamente apertado.
Mas eu ainda tomei uma noite e meio dia para olhar para a lista vinculada de mão única. E tentei escrever um exemplo usando o Java. Amigos que não foram expostos à lista vinculada podem usá -la como referência. Espero que você dê sugestões mais valiosas.
Vamos primeiro explicar o que é uma lista vinculada. Até onde eu sei, uma lista vinculada é uma estrutura de dados, que está no mesmo nível que uma matriz. Por exemplo, o princípio da implementação do ArrayList que usamos no Java é a matriz. O princípio da implementação do LinkedList é a lista vinculada. Meu professor disse que as listas vinculadas não são eficientes ao circular, mas têm vantagens óbvias ao inserir e excluir. Então ele tem mais de dez anos de experiência em programação, acredito. Mas não sei se ele está falando sobre listas vinculadas de mão dupla. Estamos aqui para entender apenas listas vinculadas de mão única.
As listas vinculadas (a cadeia mencionada neste artigo são todas as listas vinculadas unidirecionais, e as seguintes são chamadas de listas vinculadas unidirecionais) são realmente compostas de nós (nós) e uma lista vinculada possui um número incerto de nós. Existe apenas um nó da cabeça (cabeça) exposto para fora, e todas as nossas operações na lista vinculada são executadas direta ou indiretamente através do nó da cabeça.
Um nó é composto por um objeto que precisa ser armazenado e uma referência ao próximo nó. Ou seja, um nó tem dois membros: um objeto armazenado, uma referência ao próximo nó.
Você pode não entender isso muito bem, e pode ser mais fácil entender se eu postar uma foto.
Os códigos -chave para a implementação de operações básicas das listas vinculadas Java são as seguintes:
pacote com.tyxh.link; // classe nó public classe nó {nó protegido a seguir; // Campo de ponteiro protegido Int Data; // Data Field Public Node (Int Data) {this. dados = dados; } // Mostrar este nó public void Display () {System. out.print (Data + ""); }} pacote com.tyxh.link; // Lista de link único Public Class LinkList {public Node First; // Defina um cabeçalho private int pos = 0; // a localização do nó public linkList () {this. primeiro = nulo; } // Insira um nó da cabeça public void addfirstNode (int dados) {nó nó = new Node (dados); nó. próximo = primeiro; primeiro = nó; } // Exclua um nó da cabeça e retorne o nó da cabeça do nó público deletefirstnode () {nó tempnode = primeiro; primeiro = tempnode. próximo; retornar tempnode; } // Insira um nó em qualquer local e insira o public void após o índice add (int index, int dados) {nó nó = new Node (dados); Nó corrente = primeiro; Nó anterior = primeiro; while (pos! = index) {anterior = current; atual = corrente. próximo; POS ++; } nó. próximo = atual; anterior. próximo = nó; pos = 0; } // Excluir nós em qualquer local Public Node DeleteBypos (Int Index) {Node Current = Primeiro; Nó anterior = primeiro; while (pos! = index) {pos ++; anterior = atual; atual = corrente. próximo; } if (current == primeiro) {primeiro = primeiro. próximo; } else {pos = 0; anterior. próximo = atual. próximo; } retornar atual; } // Exclua o nó de acordo com os dados do nó (exclua apenas o primeiro) Public Node DeletebyData (int data) {node current = primeiro; Nó anterior = primeiro; // Lembre -se do nó anterior while (Current. Data! = Data) {if (Current. Next == NULL) {return null; } anterior = atual; atual = corrente. próximo; } if (current == primeiro) {primeiro = primeiro. próximo; } else {anterior. próximo = atual. próximo; } retornar atual; } // Mostrar todas as informações do nó public void DisplayAllNodes () {Node Current = Primeiro; while (atual! = null) {current.Display (); atual = corrente. próximo; } Sistema. out.println (); } // Encontre as informações do nó com base no local do nó público findBypos (int index) {node Current = primeiro; if (pos! = index) {current = current. próximo; POS ++; } retornar atual; } // Encontre informações do nó com base em dados public node findbydata (int data) {node current = primeiro; while (atual. Data! = Data) {if (atual. próximo == null) retornar nulo; atual = corrente. próximo; } retornar atual; }} pacote com.tyxh.link; // Classe de teste public classe 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 (); // nó nó = linklist.deletefirstnode (); // system.out.println ("node:" + node.data); // linklist.displayallnodes (); // node = linklist.deletebypos (2); // system.out.println ("node:" + node.data); // linklist.displayallnodes (); // linklist.deletefirstnode (); Nó nó = linklist.deletebydata (19); // nó nó = linklist.deletebypos (0); Sistema. out.println ("nó:" + nó. dados); linklist.displayallnodes (); Nó nó1 = linklist.findbypos (0); Sistema. out.println ("node1:" + node1. dados); Nó nó2 = linklist.findbydata (22); Sistema. out.println ("node2:" + node2. dados); }}O exposto acima é a implementação das operações básicas das listas vinculadas Java Introduzidas pelo editor. Espero que seja útil para você. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a você a tempo. Muito obrigado pelo seu apoio ao site wulin.com!