A diferença entre lista sequencial e lista encadeada

/ tabela de sequência lista vinculada
implementação de baixo nível Aloque espaço no heap por meio de arrays dinâmicos e armazene-os continuamente Lista encadeada dinâmica, alocando espaço na área de heap
Utilização do espaço Por ser um espaço contínuo, não é fácil causar fragmentação de memória e a taxa de utilização do espaço é alta. Os nós não são contínuos, o que é fácil de causar fragmentação de memória e baixa utilização de espaço (por exemplo, o campo de dados de um nó ocupa um byte e o ponteiro ocupa quatro bytes, então a utilização do espaço será menor que 1/5, que é inferior ao da tabela de sequências. Disse que a utilização do espaço é muito baixa)
elemento de consulta A complexidade de tempo é O(n) sem classificação, e a complexidade de tempo de usar a consulta binária após a classificação é O(logn) A complexidade de tempo é O(n)
Inserir e excluir inserir:①No caso de espaço suficiente: a complexidade de tempo da última inserção é O(1), e os dados originais precisam ser movidos para trás antes de adicionar elementos no meio. ②No caso de espaço insuficiente: Você precisa solicitar memória e liberar memória e, em seguida, copiar os dados anteriores.excluir:A complexidade de tempo de deletar no final é O(1), e deletar no meio: movendo os seguintes dados para frente sem liberar memória, a complexidade de tempo é O(n). Além disso, para evitar a falta frequente de memória e realizar operações de expansão, você pode chamar a função Reserve (função de expansão de capacidade) para liberar espaço sem armazenar dados. O espaço da tabela de sequência de inicialização é aumentado em 2 vezes do original, melhorando assim a taxa de utilização da tabela de sequência. Inserir: (requer solicitação de memória)Inserir O(1);Push_front O(1);Push_back O(1);delete: (requer liberação de memória)Pop_front() O(1);Pop_back() O(1); Apagar O(1);

Quando uma tabela de sequência deve ser usada?
Se você precisa de acesso aleatório eficiente, não se importa com a eficiência da inserção e exclusão (operações de inserção e exclusão raramente são executadas), então escolha v para usar uma tabela sequencial. Além disso, a tabela de sequências possui localidade espacial, caso uma localização de memória seja acessada, os dados da localização próxima também serão acessados ​​no futuro, o que reduzirá os eventos de execução do programa e melhorará a eficiência da execução do programa.

Quando devo usar uma lista vinculada?
Se for necessário um grande número de operações de exclusão e inserção, o acesso aleatório raramente é usado e uma lista vinculada é usada

Supongo que te gusta

Origin blog.csdn.net/m0_54355780/article/details/122782865
Recomendado
Clasificación