Faça uma função recursiva para imprimir uma lista encadeada

Passo 1

O enunciado pede uma função recursiva para imprimir todos os elementos de uma lista encadeada. O conteúdo envolvido é recursão em estruturas de dados lineares, então precisamos definir a estrutura do nó e pensar no caso base e no passo recursivo.

Passo 2

Primeiro, vamos modelar a estrutura de dados em C, criando um tipo ‘No’ que guarda um valor e um ponteiro para o próximo nó da lista.
Em seguida, identificamos o caso base da recursão: quando o ponteiro para o nó atual for NULL, não há mais elementos a serem impressos, então a função deve simplesmente retornar sem fazer nada.
Para o passo recursivo, quando estivermos em um nó válido, imprimimos o valor desse nó e chamamos a própria função passando o ponteiro para o próximo nó, delegando a impressão do restante da lista para a chamada recursiva.

Passo 3

Por fim, unimos tudo e escrevemos a função completa em C, incluindo a verificação do caso base e a chamada recursiva.

Resposta

typedef struct No {
int valor;
struct No *proximo;
} No;
void imprimeLista(No *lista) {
if (lista == NULL) {
return;
}
printf("%d ", lista->valor);
imprimeLista(lista->proximo);
}

Exercícios relacionados