Desafio 1: Implemente o TAD Listas duplamente ligadas de inteiros. Deve ter as operações abaixo: (2 V):
f. Imprimir a lista
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 noinicio
da lista. - Usamos um
while
para percorrer a lista enquantoatual
não forNULL
. - 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!