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;
        }
};

Related entries: