Implementação de Listas Ligadas em C++ (CRUD)
Classified in Computers
Written on in
English with a size of 3.44 KB
Listas Ligadas em C++: Adicionar, Excluir, Buscar e Imprimir
Implementação básica de uma lista simplesmente ligada em C++, cobrindo as operações essenciais de manipulação de dados.
Configuração Inicial em C++
#include <iostream>
using namespace std;Classe Node (Nó)
Define a estrutura fundamental de cada elemento da lista.
class Node {
public:
int value; // Pode ser implementado qualquer tipo de dados aqui.
Node *next;
Node () {
next = NULL; // Construtor Padrão
}
Node (int _value) { // Construtor com Atribuição de Valor
value = _value;
next = NULL;
}
};Classe List (Lista Ligada)
Gerencia a coleção de nós e as operações da lista.
class List {
public:
Node *head; // A cabeça (head) é um ponteiro para o primeiro elemento da lista.
List () { // Construtor Padrão da Lista
head = NULL;
}Métodos da Classe List
push_back (Adicionar ao Final)
Método para adicionar um novo elemento ao final da lista.
void push_back (int x) {
Node *novo = new Node;
novo->value = x;
if (head == NULL)
head = novo;
else {
Node *onde = head;
while (onde->next)
onde = onde->next;
onde->next = novo;
}
}imprime (Imprimir Lista)
Método para imprimir todos os elementos na saída padrão.
void imprime(){
Node* temp = head;
while (temp) {
cout << temp->value << endl;
temp = temp->next;
}
return;
}find (Buscar Elemento)
Método de busca de um elemento na lista. Retorna true se o valor x for encontrado.
bool find (int x) {
Node *pointer = new Node; // Nota: O objeto criado aqui não é liberado.
if (!head)
return false;
pointer = head;
for (; pointer; pointer = pointer->next)
if (pointer->value == x)
return true;
return false;
}deletar (Excluir Elementos)
Método de exclusão que remove todas as ocorrências do valor x da lista.
bool deletar (int x) {
Node *pointer = new Node; // Nota: O objeto criado aqui não é liberado.
if (!find(x))
return false;
// Remove elementos do início (se houver)
while (head->value == x)
head = head->next;
if (!head)
return false;
pointer = head;
// Remove elementos do meio/fim
while (pointer) {
if (pointer->next)
if (pointer->next->value == x)
pointer->next = pointer->next->next;
pointer = pointer->next;
}
return true;
}
};