03 - aula 11 - listas duplamente encadeadas
DESCRIPTION
discrição sobre lista duplamente encadeadaTRANSCRIPT
![Page 1: 03 - Aula 11 - Listas Duplamente Encadeadas](https://reader033.vdocuments.pub/reader033/viewer/2022051218/5695d2161a28ab9b02990dcb/html5/thumbnails/1.jpg)
![Page 2: 03 - Aula 11 - Listas Duplamente Encadeadas](https://reader033.vdocuments.pub/reader033/viewer/2022051218/5695d2161a28ab9b02990dcb/html5/thumbnails/2.jpg)
Listas Duplamente Encadeadas
Prof. Esp. Rodrigo Hentz
![Page 3: 03 - Aula 11 - Listas Duplamente Encadeadas](https://reader033.vdocuments.pub/reader033/viewer/2022051218/5695d2161a28ab9b02990dcb/html5/thumbnails/3.jpg)
Definição
• Uma lista encadeada circular tem mais vantagens sobre uma lista
encadeada linear, porém ainda apresenta algumas deficiências.
• Não podemos atravessar uma lista deste tipo no sentido contrário
ou ainda para inserir ou adicionar um novo nó temos de ter um
ponteiro para seu sucessor.
3
Listas Duplamente Encadeadas
![Page 4: 03 - Aula 11 - Listas Duplamente Encadeadas](https://reader033.vdocuments.pub/reader033/viewer/2022051218/5695d2161a28ab9b02990dcb/html5/thumbnails/4.jpg)
Definição
• Caso estes recursos sejam necessários, a estrutura de dados
adequada é uma lista duplamente ligada.
• Cada nó em uma lista deste tipo contém dois ponteiros, um para
seu predecessor e um para seu sucessor.
• As listas duplamente ligadas podem ser lineares ou circulares e
podem ou não conter um nó de cabeçalho.
4
Listas Duplamente Encadeadas
![Page 5: 03 - Aula 11 - Listas Duplamente Encadeadas](https://reader033.vdocuments.pub/reader033/viewer/2022051218/5695d2161a28ab9b02990dcb/html5/thumbnails/5.jpg)
Definição
5
Listas Duplamente Encadeadas
![Page 6: 03 - Aula 11 - Listas Duplamente Encadeadas](https://reader033.vdocuments.pub/reader033/viewer/2022051218/5695d2161a28ab9b02990dcb/html5/thumbnails/6.jpg)
Definição
• Podemos considerar os nós em uma lista duplamente ligada como
consistindo em três campos: um atributo INF que contém as
informações armazenadas no nó e os campos anterior e próximo,
que contém ponteiros para os nós em ambos os lados (esquerdo e
direito).
6
Listas Duplamente Encadeadas
![Page 7: 03 - Aula 11 - Listas Duplamente Encadeadas](https://reader033.vdocuments.pub/reader033/viewer/2022051218/5695d2161a28ab9b02990dcb/html5/thumbnails/7.jpg)
Definição
• Podemos declarar um conjunto de nós deste tipo usando a
implementação em vetor ou dinâmica:
7
Listas Duplamente Encadeadas
![Page 8: 03 - Aula 11 - Listas Duplamente Encadeadas](https://reader033.vdocuments.pub/reader033/viewer/2022051218/5695d2161a28ab9b02990dcb/html5/thumbnails/8.jpg)
Rotinas
• Apresentaremos agora rotinas que operam sobre listas duplamente
encadeadas.
• Uma propriedade conveniente dessas listas é que, se p for um
ponteiro para um nó qualquer, permitindo que anterior(p) seja uma
abreviação para no[p].anterior ou p->anterior, e proximo(p) uma
abreviação para no[p].proximo ou p->proximo, teremos:
anterior(proximo(p)) = p = proximo(anterior(p))
8
Listas Duplamente Encadeadas
![Page 9: 03 - Aula 11 - Listas Duplamente Encadeadas](https://reader033.vdocuments.pub/reader033/viewer/2022051218/5695d2161a28ab9b02990dcb/html5/thumbnails/9.jpg)
Rotinas
• Apresentaremos agora rotinas que operam sobre listas duplamente
encadeadas.
• Uma propriedade conveniente dessas listas é que, se p for um
ponteiro para um nó qualquer, permitindo que anterior(p) seja uma
abreviação para no[p].anterior ou p->anterior, e proximo(p) uma
abreviação para no[p].proximo ou p->proximo, teremos:
anterior(proximo(p)) = p = proximo(anterior(p))
9
Listas Duplamente Encadeadas
![Page 10: 03 - Aula 11 - Listas Duplamente Encadeadas](https://reader033.vdocuments.pub/reader033/viewer/2022051218/5695d2161a28ab9b02990dcb/html5/thumbnails/10.jpg)
Rotinas
• Funções utilizadas em uma lista duplamente encadeada:
• Criação da lista encadeada e inicialização
• Criação do nó dinamicamente
• Inserir nó no inicio
• Inserir nó no final
• Inserir nó ordenado
• Remover nó
• Pesquisar nó
• Imprimir nós10
Listas Duplamente Encadeadas
![Page 11: 03 - Aula 11 - Listas Duplamente Encadeadas](https://reader033.vdocuments.pub/reader033/viewer/2022051218/5695d2161a28ab9b02990dcb/html5/thumbnails/11.jpg)
Criação da Estrutura
11
Listas Duplamente Encadeadas
![Page 12: 03 - Aula 11 - Listas Duplamente Encadeadas](https://reader033.vdocuments.pub/reader033/viewer/2022051218/5695d2161a28ab9b02990dcb/html5/thumbnails/12.jpg)
Criação da lista
• O ponteiro inicial da lista é definido e atribuído a nulo.
12
Listas Duplamente Encadeadas
![Page 13: 03 - Aula 11 - Listas Duplamente Encadeadas](https://reader033.vdocuments.pub/reader033/viewer/2022051218/5695d2161a28ab9b02990dcb/html5/thumbnails/13.jpg)
Criação da lista
• O ponteiro inicial da lista é definido e atribuído a nulo.
13
Listas Duplamente Encadeadas
![Page 14: 03 - Aula 11 - Listas Duplamente Encadeadas](https://reader033.vdocuments.pub/reader033/viewer/2022051218/5695d2161a28ab9b02990dcb/html5/thumbnails/14.jpg)
Definindo o menu inicial
14
![Page 15: 03 - Aula 11 - Listas Duplamente Encadeadas](https://reader033.vdocuments.pub/reader033/viewer/2022051218/5695d2161a28ab9b02990dcb/html5/thumbnails/15.jpg)
Criação de um nó dinamicamente
• Um novo nó é criado utilizando as funções de alocação dinâmica e
seu ponteiro retornado com base no endereço de memória onde foi
criado.
15
Listas Duplamente Encadeadas
![Page 16: 03 - Aula 11 - Listas Duplamente Encadeadas](https://reader033.vdocuments.pub/reader033/viewer/2022051218/5695d2161a28ab9b02990dcb/html5/thumbnails/16.jpg)
Inserir nó no início
• Um novo nó é inserido no início da lista passando a ser o cabeçalho
da lista. Caso já existir um nó ele deve ser amarrado ao novo.
16
Listas Duplamente Encadeadas
![Page 17: 03 - Aula 11 - Listas Duplamente Encadeadas](https://reader033.vdocuments.pub/reader033/viewer/2022051218/5695d2161a28ab9b02990dcb/html5/thumbnails/17.jpg)
Inserir nó no início e chamada do menu
17
Listas Duplamente Encadeadas
![Page 18: 03 - Aula 11 - Listas Duplamente Encadeadas](https://reader033.vdocuments.pub/reader033/viewer/2022051218/5695d2161a28ab9b02990dcb/html5/thumbnails/18.jpg)
Inserir nó no final
• Um novo nó é inserido no final da lista.
18
Listas Duplamente Encadeadas
![Page 19: 03 - Aula 11 - Listas Duplamente Encadeadas](https://reader033.vdocuments.pub/reader033/viewer/2022051218/5695d2161a28ab9b02990dcb/html5/thumbnails/19.jpg)
Inserir nó no final e chamada do menu
19
Listas Duplamente Encadeadas
![Page 20: 03 - Aula 11 - Listas Duplamente Encadeadas](https://reader033.vdocuments.pub/reader033/viewer/2022051218/5695d2161a28ab9b02990dcb/html5/thumbnails/20.jpg)
Inserir nó ordenado
• Um novo nó é inserido na posição baseado no índice.
20
Listas Duplamente Encadeadas
![Page 21: 03 - Aula 11 - Listas Duplamente Encadeadas](https://reader033.vdocuments.pub/reader033/viewer/2022051218/5695d2161a28ab9b02990dcb/html5/thumbnails/21.jpg)
21
Listas Duplamente Encadeadas
![Page 22: 03 - Aula 11 - Listas Duplamente Encadeadas](https://reader033.vdocuments.pub/reader033/viewer/2022051218/5695d2161a28ab9b02990dcb/html5/thumbnails/22.jpg)
22
Listas Duplamente Encadeadas
![Page 23: 03 - Aula 11 - Listas Duplamente Encadeadas](https://reader033.vdocuments.pub/reader033/viewer/2022051218/5695d2161a28ab9b02990dcb/html5/thumbnails/23.jpg)
Excluir um nó
• O nó é retirado da lista e sua alocação é liberada. Os ponteiros
anterior e próximo são alimentados nos outros nós.
23
Listas Duplamente Encadeadas
![Page 24: 03 - Aula 11 - Listas Duplamente Encadeadas](https://reader033.vdocuments.pub/reader033/viewer/2022051218/5695d2161a28ab9b02990dcb/html5/thumbnails/24.jpg)
24
Listas Duplamente Encadeadas
![Page 25: 03 - Aula 11 - Listas Duplamente Encadeadas](https://reader033.vdocuments.pub/reader033/viewer/2022051218/5695d2161a28ab9b02990dcb/html5/thumbnails/25.jpg)
25
Listas Duplamente Encadeadas
![Page 26: 03 - Aula 11 - Listas Duplamente Encadeadas](https://reader033.vdocuments.pub/reader033/viewer/2022051218/5695d2161a28ab9b02990dcb/html5/thumbnails/26.jpg)
26
Listas Duplamente Encadeadas
![Page 27: 03 - Aula 11 - Listas Duplamente Encadeadas](https://reader033.vdocuments.pub/reader033/viewer/2022051218/5695d2161a28ab9b02990dcb/html5/thumbnails/27.jpg)
27