Listas

Listas em C++ são estruturas de dados que permitem armazenar elementos de forma sequencial, com grande flexibilidade para inserção e remoção em qualquer posição. O C++ oferece a classe std::list na biblioteca padrão, que implementa uma lista duplamente encadeada.

1. Incluir a biblioteca

Para usar listas, inclua o cabeçalho:

#include <list>
#include <iostream>
using namespace std;

2. Declarar uma lista

Podemos declarar uma lista de inteiros assim:

list<int> minhaLista;

3. Inserir elementos

  • No final: minhaLista.push_back(10); // Insere 10 no final
  • No início: minhaLista.push_front(5); // Insere 5 no início

4. Remover elementos

  • Do início: minhaLista.pop_front(); // Remove o primeiro elemento
  • Do final: minhaLista.pop_back(); // Remove o último elemento

5. Percorrer a lista

Podemos percorrer a lista usando uma repetição for com iteradores:

for (list<int>::iterator it = minhaLista.begin(); it != minhaLista.end(); ++it) {
cout << *it << " ";
}
cout << endl;

Ou, usando a repetição for(C++11 ou superior):

for (int valor : minhaLista) {
cout << valor << " ";
}
cout << endl;

6. Tamanho da lista

Para saber quantos elementos estão na lista:

cout << "Tamanho: " << minhaLista.size() << endl;

Exemplo de uso do método size:

list<int> c1;
c1.push_back(5);
cout << "List length is " << c1.size() << "." << endl;
c1.push_back(7);
cout << "List length is now " << c1.size() << "." << endl;

7. Remover elemento específico

Para remover todos os elementos com valor igual a 10:

minhaLista.remove(10);

8. Exemplo completo

#include <list>
#include <iostream>
using namespace std;

int main() {
list<int> numeros;

// Inserir elementos
numeros.push_back(10);
numeros.push_front(5);
numeros.push_back(20);

// Exibir a lista
cout << "Lista: ";
for (int n : numeros) {
cout << n << " ";
}
cout << endl;

// Remover do início e do final
numeros.pop_front();
numeros.pop_back();

// Exibir novamente
cout << "Após remoções: ";
for (int n : numeros) {
cout << n << " ";
}
cout << endl;

// Tamanho da lista
cout << "Tamanho: " << numeros.size() << endl;

return 0;
}

9. Observações

  • A lista do C++ permite inserção e remoção eficiente em qualquer posição, mas o acesso direto (por índice) é lento.
  • Para aceder um elemento específico, é necessário percorrer a lista até ele.