Diferença entre matriz e lista vinculada

Autor: Laura McKinney
Data De Criação: 3 Abril 2021
Data De Atualização: 8 Poderia 2024
Anonim
Diferença entre matriz e lista vinculada - Tecnologia
Diferença entre matriz e lista vinculada - Tecnologia

Contente


A principal diferença entre Matriz e Lista vinculada em relação à sua estrutura. Matrizes são baseado em índice estrutura de dados em que cada elemento associado a um índice. Por outro lado, a lista vinculada depende de referências onde cada nó consiste nos dados e nas referências ao elemento anterior e próximo.

Basicamente, uma matriz é um conjunto de objetos de dados semelhantes armazenados em locais de memória seqüencial sob um cabeçalho comum ou um nome de variável.

Enquanto uma lista vinculada é uma estrutura de dados que contém uma sequência dos elementos em que cada elemento está vinculado ao seu próximo elemento. Existem dois campos em um elemento da lista vinculada. Um é o campo Dados e o outro é o campo Link, o campo Dados contém o valor real a ser armazenado e processado. Além disso, o campo do link contém o endereço do próximo item de dados na lista vinculada. O endereço usado para acessar um nó específico é conhecido como ponteiro.


Outra diferença significativa entre uma matriz e uma lista vinculada é que a matriz tem um tamanho fixo e precisa ser declarada anteriormente, mas a Lista vinculada não se restringe ao tamanho, à expansão e ao contrato durante a execução.

  1. Gráfico de comparação
  2. Definição
  3. Principais diferenças
  4. Conclusão

Gráfico de comparação

Base para ComparaçãoMatrizLista vinculada
BasicÉ um conjunto consistente de um número fixo de itens de dados.É um conjunto ordenado que compreende um número variável de itens de dados.
TamanhoEspecificado durante a declaração.Não há necessidade de especificar; crescer e encolher durante a execução.
Alocação de armazenamento A localização do elemento é alocada durante o tempo de compilação.A posição do elemento é atribuída durante o tempo de execução.
Ordem dos elementos Armazenado consecutivamente Armazenado aleatoriamente
Acessando o elementoAcesso direto ou aleatório, ou seja, especifique o índice ou o índice da matriz.Acessado sequencialmente, ou seja, Atravessar a partir do primeiro nó da lista pelo ponteiro.
Inserção e exclusão de elementoLenta relativamente conforme a mudança é necessária.Mais fácil, rápido e eficiente.
Procurando Pesquisa binária e pesquisa linearpesquisa linear
Memória necessáriaMenos Mais
Utilização de memóriaIneficazEficiente


Definição de Matriz

Uma matriz é definida como um conjunto de um número definido de elementos homogêneos ou itens de dados. Isso significa que uma matriz pode conter apenas um tipo de dados, todos os números inteiros, todos os números de ponto flutuante ou todos os caracteres. A declaração de uma matriz é a seguinte:
int a;
Onde int especifica o tipo de dados ou a matriz de elementos de tipo armazenada. "A" é o nome de uma matriz, e o número especificado entre colchetes é o número de elementos que uma matriz pode armazenar, isso também é chamado de tamanho ou comprimento da matriz.

Vejamos alguns dos conceitos a serem lembrados sobre matrizes:

  • Os elementos individuais de uma matriz podem ser acessados ​​descrevendo o nome da matriz, seguido por índice ou subscrito (determinando a localização do elemento na matriz) dentro dos colchetes. Por exemplo, para recuperar o quinto elemento da matriz, precisamos escrever uma instrução a.
  • De qualquer forma, os elementos de uma matriz serão armazenados em um local de memória consecutivo.
  • O primeiro elemento da matriz tem índice zero. Isso significa que o primeiro e o último elemento serão especificados como ae a respectivamente.
  • O número de elementos que podem ser armazenados em uma matriz, ou seja, o tamanho de uma matriz ou seu comprimento é dado pela seguinte equação:
    (limite superior-limite inferior) + 1
    Para a matriz acima, seria (9-0) + 1 = 10. Onde 0 é o limite inferior da matriz e 9 é o limite superior da matriz.
  • As matrizes podem ser lidas ou gravadas através do loop. Se lermos o array unidimensional, ele precisará de um loop para leitura e outro para escrever (ing) o array, por exemplo:
    uma. Para ler uma matriz
    para (i = 0; i <= 9; i ++)
    {scanf ("% d", & a); }
    b. Para escrever uma matriz
    para (i = 0; i <= 9; i ++)
    {f ("% d", a); }
  • No caso de uma matriz 2-D, seriam necessárias duas voltas e a mesma matriz n-dimensional precisaria de n voltas.

As operações executadas em matrizes são:

  1. Criação de array
  2. Atravessando uma matriz
  3. Inserção de novos elementos
  4. Exclusão de elementos necessários.
  5. Modificação de um elemento.
  6. Mesclagem de matrizes

Exemplo

O programa a seguir ilustra a leitura e gravação da matriz.

#incluir
#incluir
vazio principal ()
{
int a, i;
f ("Digite a matriz");
para (i = 0; i <= 9; i ++)
{
scanf ("% d", & a);
}
f ("Digite a matriz");
para (i = 0; i <= 9; i ++)
{
f ("% d n", a);
}
getch ();
}

Definição de lista vinculada

Lista vinculada é uma lista específica de alguns elementos de dados vinculados um ao outro. Neste, todo elemento aponta para o próximo elemento que representa a ordem lógica. Cada elemento é chamado de nó, que tem duas partes.

INFO parte que armazena as informações e POINTER que aponta para o próximo elemento. Como você sabe para armazenar endereços, temos estruturas de dados exclusivas em C chamadas ponteiros. Portanto, o segundo campo da lista deve ser do tipo ponteiro.

Os tipos de listas vinculadas são: lista vinculada individual, lista vinculada duplamente, lista vinculada circular, lista vinculada dupla circular.

As operações executadas na Lista vinculada são:

  1. Criação
  2. Atravessando
  3. Inserção
  4. Eliminação
  5. Procurando
  6. Concatenação
  7. Exibição

Exemplo

O seguinte snippet ilustra a criação de uma lista vinculada:

nó struct
{
int num;
nó da estrutura * next;
}
start = NULL;
void create ()
{
nó de estrutura typedef NODE;
NODE * p, * q;
escolha de caracteres;
primeiro = NULL;
Faz
{
p = (NODE *) malloc (sizeof (NODE));
f ("Digite o item de dados n");
scanf ("% d", & p -> num);
if (p == NULL)
{
q = início;
while (q -> next! = NULL)
{q = q -> próximo
}
p -> próximo = q -> próximo;
q -> = p;
}
outro
{
p -> próximo = iniciar;
start = p;
}
f ("Deseja continuar (digite y ou n)? n");
scanf ("% c", & escolha);
}
while ((escolha == y) || (escolha == Y));
}

  1. Uma matriz é a estrutura de dados que contém uma coleção de elementos de dados de tipo semelhante, enquanto a lista Vinculada é considerada como estrutura de dados não primitiva contém uma coleção de elementos vinculados não ordenados conhecidos como nós.
  2. Na matriz, os elementos pertencem a índices, ou seja, se você deseja entrar no quarto elemento, deve escrever o nome da variável com seu índice ou localização dentro do colchete.
    Em uma lista vinculada, no entanto, você precisa começar do início e seguir até o quarto elemento.
  3. Embora o acesso a uma matriz de elementos seja rápido, enquanto a lista vinculada leva um tempo linear, é um pouco mais lenta.
  4. Operações como inserção e exclusão em matrizes consomem muito tempo. Por outro lado, o desempenho dessas operações nas listas vinculadas é rápido.
  5. Matrizes são de tamanho fixo. Por outro lado, as listas vinculadas são dinâmicas e flexíveis e podem expandir e contrair seu tamanho.
  6. Em uma matriz, a memória é atribuída durante o tempo de compilação, enquanto em uma lista vinculada ela é alocada durante a execução ou tempo de execução.
  7. Os elementos são armazenados consecutivamente nas matrizes, enquanto são armazenados aleatoriamente nas listas Vinculadas.
  8. O requisito de memória é menor devido aos dados reais serem armazenados no índice na matriz. Por outro lado, há uma necessidade de mais memória nas Listas Vinculadas devido ao armazenamento de elementos de referência adicionais seguintes e anteriores.
  9. Além disso, a utilização da memória é ineficiente na matriz. Por outro lado, a utilização da memória é eficiente na matriz.

Conclusão

Matrizes e listas vinculadas são os tipos de estruturas de dados que diferem em sua estrutura, métodos de acesso e manipulação, requisitos de memória e utilização. E tem vantagens e desvantagens particulares em relação à sua implementação. Conseqüentemente, qualquer um pode ser usado conforme a necessidade.