Desafio 2: Implemente o TAD Listas circulares simples. Deve ter as operações abaixo: (2 V)
e. Procurar elemento

Passo 1

Vamos resolver o desafio de implementar a operação de procurar elemento em um TAD de Listas Circulares Simples. Para isso, vamos precisar entender como funciona uma lista circular simples e como implementar a busca de um elemento dentro dela usando conceitos de estruturas de dados e programação.

Passo 2

Primeiro, vamos lembrar que uma Lista Circular Simples é uma estrutura onde cada nó aponta para o próximo, e o último nó aponta de volta para o primeiro, formando um círculo. Isso permite que a lista não tenha um fim definido e facilite a navegação contínua.

Passo 3

Para procurar um elemento, precisamos percorrer a lista começando do cabeça (ou ponteiro inicial) e comparar cada elemento com o valor que estamos procurando. Se encontrarmos o elemento, retornamos sua posição ou o próprio nó; se percorremos toda a lista e não encontramos, indicamos que o elemento não existe na lista.

Passo 4

Vamos implementar a função de procurar elemento em C. Supondo que já temos a estrutura do nó e a lista circular criada, a função receberá o valor a ser buscado e retornará o nó correspondente ou NULL se não for encontrado.
#include <stdio.h>
#include <stdlib.h>

// Estrutura do nó
typedef struct Node {
    int data;
    struct Node* next;
} Node;

// Função para procurar um elemento
Node* buscarElemento(Node* head, int valor) {
    if (head == NULL) {
        return NULL; // Lista vazia
    }

    Node* atual = head;
    do {
        if (atual->data == valor) {
            return atual; // Elemento encontrado
        }
        atual = atual->next;
    } while (atual != head); // Continua até voltar ao início

    return NULL; // Elemento não encontrado
}

Passo 5

Vamos explicar o que cada parte do código faz:
  • Estrutura do Nó: Define a estrutura básica de um nó com um campo data para armazenar o valor e um ponteiro next para apontar para o próximo nó.
  • Função buscarElemento:
    • Verificação Inicial: Se a lista estiver vazia (head == NULL), retorna NULL indicando que não há elementos para buscar.
    • Percorrer a Lista: Usa um ponteiro atual para percorrer a lista, começando pela cabeça.
    • Comparação: A cada nó, verifica se o data corresponde ao valor procurado.
    • Retorno: Se encontrar, retorna o nó; se não, continua até retornar à cabeça, então retorna NULL.

Resposta

Implementamos a operação de procurar um elemento em uma Lista Circular Simples em C. A função buscarElemento percorre a lista começando pela cabeça, compara cada elemento com o valor buscado e retorna o nó correspondente se encontrado, ou NULL caso contrário.

Exercícios relacionados