Tabela linear
As tabelas lineares são as estruturas de dados mais simples e comumente usadas. São seqüências finitas compostas por n elementos de dados individuais (nós). Entre eles, o número n de elementos de dados é o comprimento da tabela. Quando n é zero, ele se torna uma tabela vazia. Uma tabela linear não vazia é geralmente registrada como:
(A1, A2,…, ai-1, ai, ai+1,…, an)
1. Armazenamento seqüencial e algoritmo de tabelas lineares
O armazenamento seqüencial de uma tabela linear refere -se ao armazenamento dos elementos de dados da tabela linear em um conjunto de unidades de armazenamento contínuo com endereços em sua ordem lógica. A tabela linear armazenada dessa maneira é chamada de tabela seqüencial.
1. Definição estrutural da tabela de pedidos
classe pública seqlist { / * o espaço inicial é 10 * / private estático final int list_size = 10; /* Os dados da matriz são usados para armazenar elementos*/ private int [] dados; /* A tabela atual é longa, o número real de elementos armazenados*/ private int comprimento; } 2. Inserir operação
A operação de inserção da tabela seqüencial refere-se à inserção de um novo elemento entre o elemento I-1th e o elemento I -th da tabela linear. Como os elementos adjacentes da tabela de sequência também são adjacentes na estrutura física, suas relações de armazenamento físico também devem sofrer alterações correspondentes. A menos que eu = n+1, todos os elementos que começam a partir do elemento i-ésimo da tabela de pedidos originais devem ser movidos para trás em 1 posição, respectivamente.
/** * Insira um novo elemento antes da i-ésima posição no nó da lista da tabela de pedidos * @param List Order Table * @param i Inserir posição * @param node novo elemento */public void insertlist (list seqlist, int i, int node) {if (i <1 | i> list.Length + 1) {System.It.PRINT) {if (i <1 | i> list.Length + 1) {System.out.Int.PRINT) {if (i <1 | i> retornar; } if (list.Length> = list_size) {System.out.println ("Overflow"); retornar; } para (int j = list.length - 1; j> = i - 1; j -) { / * Inicie do último elemento e volte um por um por um * / list.data [j+1] = list.data [j]; } /* Insira novo elemento* / list.data [i-1] = node; / * Adicione 1 ao comprimento da tabela */ list.Length ++; } 3. Exclua operação
A operação de exclusão da tabela seqüencial refere-se à exclusão do i-ésimo elemento na tabela. Em contraste com a operação de inserção, a inserção está movendo o elemento para trás e a operação de exclusão está movendo o elemento para a frente.
/*** Exclua o i-ésimo elemento na lista da tabela de pedidos e retorne o elemento excluído* @param List Sequence Table* @param I Posição do elemento* @return node*/public int DeLetelist (lista seqlist, int i) {int node = 0; if (i <0 || i> list.length) {System.out.println ("erro de posição"); Nó de retorno; } node = list.data [i-1]; for (int j = i; j <list.length; j ++) { /* elemento avançado* / list.data [j-1] = list.data [j]; } list.length -; Nó devolver;} 4. Tabela de ordem inversa
Primeiro, use metade do comprimento da tabela como o número de vezes o controle de loop, troque o último elemento na tabela na ordem do primeiro elemento, troque o segundo último elemento na ordem do segundo elemento e assim por diante até que a troca seja concluída.
/** int length = list.length/2; for (int i = 0; i <comprimento; i ++) { /* elementos simétricos de troca* / int j = list.length - 1 - i; node = list.data [i]; list.data [i] = list.data [j]; list.data [j] = nó; } Lista de retorno; } 2. Armazenamento de cadeia e algoritmo de tabelas lineares
O espaço de armazenamento dos elementos de dados da estrutura de armazenamento da cadeia que armazena tabelas lineares pode ser contínuo ou descontínuo; portanto, os nós da lista vinculada não podem ser acessados aleatoriamente. O armazenamento em cadeia é um dos métodos de armazenamento mais comuns.
Ao usar uma estrutura de armazenamento em cadeia para representar cada elemento de dados, além de armazenar as informações do próprio elemento, também é necessário um endereço que indica o local de armazenamento dos elementos subsequentes. A tabela linear representada por esse método de armazenamento é chamada de lista vinculada.
5. Definição estrutural de uma única lista vinculada
classe pública LinkList { /* Campo de dados* / Dados privados de char; /* Elemento sucessivo*/ LinkList privado a seguir;} 6. Algoritmo de construção de mesa
O método de inserção do cabeçalho começa com uma tabela vazia, lê repetidamente os dados, gera um novo nó, armazena os dados de leitura no campo de dados do novo nó e, em seguida, insere o novo nó no cabeçalho da lista atual vinculada até que termine.
/*** Crie a tabela por inserção do cabeçalho* @param chars caracteres Array* @return Lista vinculada única*/public linklist createListf (char [] chars) {linklist node; Linklist head = null; for (char ch: chars) { /* solicite um novo nó* / node = new LinkList (); node.data = ch; /* Aponte para o nó sucessor*/ node.next = head; cabeça = nó; } /* Retorne ao nó da cabeça* / Retorno Head;} 7. Algoritmo de construção de tabela de método de inserção da cauda
A ordem dos nós na tabela de inserção do cabeçalho é o oposto da ordem ao entrar. Se a ordem de entrada for consistente, o método de inserção da cauda poderá ser usado.
/*** Método de inserção da cauda para criar a tabela* @param chars caracteres Array* @return Lista vinculada única*/public linklist createelist (char [] chars) {linklist node; Linklist head = null; Linklist traseiro = nulo; for (char ch: chars) {node = new linklist (); node.data = ch; if (head == null) { /* o novo nó é o nó da cabeça* / head = node; } else { /* O nó anterior aponta para o novo nó* / rear.next = node; } /* A cauda da tabela aponta para o novo nó* / traseiro = nó; } /* Retorne ao nó da cabeça* / Retorno Head;}O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.