Este projeto contém implementação de três tipos de listas em c++: lista estática, listas encadeadas e listas duplamente encadeadas.
- Introdução
- Listas Estáticas
- Listas Encadeadas
- Listas Duplamente Encadeadas
- Exemplos de Uso
- Contribuições
Este repositório contém exemplos de implementação de três tipos diferentes de listas, muito usadas em estruturas de dados. Cada tipo de lista tem suas vantagens e desvantagens, dependendo do caso de uso específico.
Listas estáticas são implementadas usando arrays. Elas têm um tamanho fixo que é determinado na criação e nao pode ser alterado durante a execcução do programa.
- Tamanho fixo
- Acesso rápido aos elementos
- Inserção e remoção de elementos podem ser custosas
listaestaticaGEN.h
- 'bool insereFim();'
- 'bool insereInicio();'
- 'bool inserePosicao();'
- 'bool removeFim();'
- 'bool removeInicio();'
- 'bool removePosicao);'
Listas encadeadas são compostas por nós, onde cada nó contém um valor e um ponteiro para o próximo nó na lista. Elas permitem um uso eficiente da memória, pois o tamanho da lista pode crescer ou diminuir dinamicamente.
- Tamanho dinâmico
- Inserção e remoção de elementos são mais eficientes do que em listas estáticas
- Acesso sequencial aos elementos
listaencadeadaGEN.h
- 'bool insereFim();'
- 'bool insereInicio();'
- 'bool inserePosicao();'
- 'bool removeFim();'
- 'bool removeInicio();'
- 'bool removePosicao);'
Listas duplamente encadeadas são uma extensão das listas encadeadas, onde cada nó possui um ponteiro para o próximo nó e um ponteiro para o nó anterior. Isso permite a navegação em ambas as direções na lista.
- Tamanho dinâmico
- Navegação bidirecional
- Inserção e remoção de elementos são eficientes
listaduplamenteencadeadaGEN.h
#include "listaestaticaGEN.h"
// Código de exemplo usando a lista estática
TLista<int, 10> lista;
inicializaLista(lista);
insereFim(lista, 5);
insereInicio(lista, 10);
#include "listaencadeadaGEN.h"
// Código de exemplo usando a lista encadeada
Tlista<int> lista;
inicializaLista(lista);
insereFim(lista, 5);
insereInicio(lista, 10);
quicksortLista(lista);
#include "listaduplamenteencadeadaGEN.h"
// Código de exemplo usando a lista duplamente encadeada
TLista<int> lista;
inicializaLista(lista);
insereFim(lista, 5);
insereInicio(lista, 10);
quickSort(lista.inicio, lista.fim);
Contribuições são bem-vindas! Por favor, abra uma issue ou faça um pull request para contribuir com melhorias.