Diferença entre matrizes e listas vinculadas

Anonim

Arrays vs Listas ligadas

As matrizes são a estrutura de dados mais comumente utilizada para armazenar a coleção de elementos. A maioria das linguagens de programação fornece métodos para declarar facilmente arrays e acessar elementos nas matrizes. A lista vinculada, mais precisamente a lista ligada individualmente, é também uma estrutura de dados que pode ser usada para armazenar a coleta de elementos. É constituído por uma seqüência de nós e cada nó possui uma referência ao próximo nó na seqüência.

Mostrado na figura 1, é um pedaço de código normalmente usado para declarar e atribuir valores a uma matriz. A Figura 2 mostra como uma matriz seria semelhante à memória.

O código acima define uma matriz que pode armazenar 5 inteiros e eles são acessados ​​usando os índices 0 a 4. Uma propriedade importante de uma matriz é que toda a matriz é alocada como um único bloco de memória e cada elemento obtém seu próprio espaço no matriz. Uma vez definida uma matriz, seu tamanho é corrigido. Então, se você não tem certeza sobre o tamanho da matriz em tempo de compilação, você precisaria definir uma disposição suficientemente grande para estar no lado seguro. Mas, na maioria das vezes, realmente vamos usar menos número de elementos do que alocamos. Portanto, uma quantidade considerável de memória é realmente desperdiçada. Por outro lado, se a "grande disposição suficiente" não for realmente grande o suficiente, o programa falharia.

Uma lista vinculada aloca memória para seus elementos separadamente em seu próprio bloco de memória e a estrutura geral é obtida ligando esses elementos como links em uma cadeia. Cada elemento em uma lista vinculada tem dois campos como mostrado na Figura 3. O campo de dados contém os dados reais armazenados e o próximo campo mantém a referência ao próximo elemento da cadeia. O primeiro elemento da lista vinculada é armazenado como o cabeçalho da lista vinculada.

dados próximo

Figura 3: Elemento de uma lista vinculada

A Figura 4 mostra uma lista vinculada com três elementos. Cada elemento armazena seus dados e todos os elementos, exceto a última loja, uma referência ao próximo elemento. O último elemento possui um valor nulo no próximo campo. Qualquer elemento na lista pode ser acessado começando na cabeça e seguindo o próximo ponteiro até encontrar o elemento necessário.

Embora as matrizes e as listas ligadas sejam semelhantes no sentido de que ambas são usadas para armazenar a coleta de elementos, elas incorrem em diferenças devido às estratégias que utilizam para alocar memória aos seus elementos. As matrizes atribuem memória a todos os seus elementos como um único bloco e o tamanho da matriz deve ser determinado no tempo de execução. Isso tornaria os arrays ineficientes em situações em que você não conhece o tamanho da matriz em tempo de compilação. Uma vez que uma lista vinculada aloca memória aos seus elementos separadamente, seria muito eficiente em situações em que você não conhece o tamanho da lista no tempo de compilação.A declaração e o acesso a elementos em uma lista vinculada não seria direto em comparação com a forma como você acessa diretamente elementos em uma matriz usando seus índices.