O documento discute listas duplamente encadeadas, incluindo sua estrutura, propriedades e operações fundamentais. Explica que cada elemento de uma lista duplamente encadeada aponta para o elemento anterior e posterior, permitindo acesso em ambas as direções. Também fornece um exemplo de código C para criar e manipular uma lista duplamente encadeada de alunos.
7. ListasSimplesmenteEncadeadas
12:17
Estrutura de Dados: Aula 12 – Listas Duplamente Encadeadas
struct alunos{
char nome[100];
int idade;
alunos *proximo;
}*lista_alunos;
char nome[100];
int idade;
"Aluno 1"
20
alunos *proximo;
char nome[100];
int idade;
"Aluno 2"
21
alunos *proximo;
char nome[100];
int idade;
"Aluno 3"
23
alunos *proximo;
NULL
Estrutura “alunos”.
Próximo elemento da lista.
8. ListaDinâmicaEncadeada
12:17
Cada elemento é tratado como um ponteiro que é alocado
dinamicamente, a medida que os dados são inseridos.
Para guardar o primeiro elemento, utilizamos um ponteiro para
ponteiro
Um ponteiro para ponteiro pode guardar o endereço de um ponteiro.
Assim, fica fácil mudar quem está no início da lista mudando o
conteúdodo ponteiroparaponteiro.
Estrutura de Dados: Aula 12 – Listas Duplamente Encadeadas
10. ListaDuplamenteEncadeada
12:17
Cada elemento é tratado como um ponteiro que é alocado
dinamicamente, a medida que os dados são inseridos.
Para guardar o primeiro elemento, utilizamos um ponteiro
paraponteiro
Assim, fica mais fácil mudar quem está no início da lista
mudando o conteúdo do ponteiroparaponteiro
Estrutura de Dados: Aula 12 – Listas Duplamente Encadeadas
11. ListaDuplamenteEncadeada
12:17
Tipo de lista onde cada elemento aponta para o seu sucessor e
antecessor na lista
Estrutura de Dados: Aula 12 – Listas Duplamente Encadeadas
Ação
anterior
12. ListaDuplamenteEncadeada
12:17
Estrutura de Dados: Aula 12 – Listas Duplamente Encadeadas
struct alunos{
char nome[100];
int idade;
alunos *proximo;
alunos *anterior;
}*lista_alunos;
Ponteiro para o
próximo nó.
Ponteiro para o nó
anterior.
13. ListaDuplamenteEncadeada
12:17
Estrutura de Dados: Aula 12 – Listas Duplamente Encadeadas
char nome[100];
int idade;
"Aluno 1"
20
alunos *proximo;
char nome[100];
int idade;
"Aluno 2"
21
char nome[100];
int idade;
"Aluno 3"
23
NULL
struct alunos{
char nome[100];
int idade;
alunos *proximo;
alunos *anterior;
}*lista_alunos;
alunos *anterior;
alunos *proximo; alunos *proximo;
alunos *anterior; alunos *anterior;
NULL
Ponteiro para o próximo nó. Ponteiro para o nó anterior.
14. ListaDuplamenteEncadeada
12:17
Vantagens
Melhor utilização dos recursos de memória
Não precisa movimentar os elementos nas
operações de inserção e remoção
Estrutura de Dados: Aula 12 – Listas Duplamente Encadeadas
18. ListaDuplamenteEncadeada
12:17
Quando utilizar?
Não há necessidade de garantir um espaço mínimo para a
execução do aplicativo
Inserção/remoção em lista ordenada são as operações
mais frequentes
Necessidade de acessar informação de um elemento
antecessor
Estrutura de Dados: Aula 12 – Listas Duplamente Encadeadas
19. Outrostiposde listas
12:17
Uma vez entendidas as listas encadeadas
básicas, você pode “inventar” muitos outros tipos
de listas encadeadas
Por exemplo, você pode construir uma lista
encadeada circular, em que a última célula aponta
para a primeira.
Estrutura de Dados: Aula 12 – Listas Duplamente Encadeadas
24. Prática
12:17 24
As aulas práticas foram baseadas no material de
LinguagemC Descomplicada , Dr. André R.Backes.
Disponívelem: https://programacaodescomplicada.wordpress.com/
e Thomásda Costa em seu GitHub
Estrutura de Dados: Aula 12 – Listas Duplamente Encadeadas