Desafio 1: Implemente o TAD Listas duplamente ligadas de inteiros. Deve ter as operações abaixo: (2 V):
f. Imprimir a lista

Passo 1

Beleza, vamos lá! O desafio é implementar o Tipo Abstrato de Dados (TAD) para Listas Duplamente Ligadas de inteiros. Isso significa que vamos criar uma estrutura onde cada elemento aponta tanto para o próximo quanto para o anterior. Hoje, nosso foco é na operação de imprimir a lista, ou seja, mostrar todos os elementos que estão na nossa lista duplamente ligada. Para resolver isso, vamos precisar entender como as listas duplamente ligadas funcionam e como navegar por elas para acessar cada elemento.

Passo 2

Primeiro, vamos lembrar como é a estrutura de uma lista duplamente ligada. Cada nó da lista contém um valor inteiro e dois ponteiros: um para o próximo nó e outro para o nó anterior. Assim, podemos percorrer a lista em ambas as direções. Para imprimir a lista, vamos começar do primeiro nó e seguir em frente até o último, exibindo cada valor.

Passo 3

Vamos definir as estruturas necessárias em código. Em C, por exemplo, podemos ter algo assim:
typedef struct No {
    int valor;
    struct No* proximo;
    struct No* anterior;
} No;

typedef struct Lista {
    No* inicio;
    No* fim;
} Lista;
Aqui, No representa cada elemento da lista, e Lista mantém referências para o primeiro e o último nó.

Passo 4

Agora, vamos implementar a função para imprimir a lista. A ideia é começar no inicio da lista e seguir o ponteiro proximo de cada nó até chegarmos ao final da lista (NULL). Em cada passo, vamos imprimir o valor do nó atual.

Passo 5

Vamos escrever o código da função imprimirLista:
#include <stdio.h>

void imprimirLista(Lista* lista) {
    No* atual = lista->inicio;
    printf("Elementos da lista: ");
    while (atual != NULL) {
        printf("%d ", atual->valor);
        atual = atual->proximo;
    }
    printf("\n");
}
Nessa função:
  • Declaramos um ponteiro atual que começa no inicio da lista.
  • Usamos um while para percorrer a lista enquanto atual não for NULL.
  • Dentro do laço, imprimimos o valor do nó atual e movemos para o próximo nó.
  • Ao final, adicionamos uma quebra de linha para melhor formatação.

Resposta

Aqui está a função completa para imprimir a lista duplamente ligada:
#include <stdio.h>

typedef struct No {
    int valor;
    struct No* proximo;
    struct No* anterior;
} No;

typedef struct Lista {
    No* inicio;
    No* fim;
} Lista;

void imprimirLista(Lista* lista) {
    No* atual = lista->inicio;
    printf("Elementos da lista: ");
    while (atual != NULL) {
        printf("%d ", atual->valor);
        atual = atual->proximo;
    }
    printf("\n");
}
Com essa função, você consegue imprimir todos os elementos presentes na sua lista duplamente ligada de inteiros!

Exercícios relacionados