![Page 1: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/1.jpg)
ESTRUTURA DE DADOS
Prof. Dr. Daniel Caetano
2014 - 2
LISTAS LINEARES ENCADEADAS
![Page 2: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/2.jpg)
Objetivos
• Conceituar Listas Lineares Encadeadas
• Compreender a alocação dinâmica e memória
• Representar Listas Simplesmente Encadeadas
• Implementar operações com as listas simplesmente encadeadas
• Atividade Estruturada!
![Page 3: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/3.jpg)
Material de Estudo
Material Acesso ao Material
Apresentação http://www.caetano.eng.br/ (Aula 12)
Material Didático Estruturas de Dados (Parte 1) – Páginas 88 a 98
Online C Completo e Total – Páginas 540 a 550
![Page 4: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/4.jpg)
RECORDANDO...
![Page 5: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/5.jpg)
Recordando...
• Vimos...
– Listas Contíguas
• Problema:
– Reservar espaço na memória
– Conhecer tamanho máximo da lista
• Precisa ser desse jeito?
• Vamos ver um jeito diferente?
![Page 6: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/6.jpg)
MOMENTO LÚDICO: ENTENDENDO UMA LISTA
ENCADEADA
![Page 7: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/7.jpg)
DISCUSSÃO SOBRE A DINÂMICA
![Page 8: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/8.jpg)
Discussão sobre Listas Encadeadas
• Os itens estavam contíguos ou espalhados?
• É possível saber até onde esta lista pode crescer?
• Seria fácil acrescentar outro objeto na sequência?
– Se for necessário mais um papel, o que haveria nesse papel?
– Será necessário mudar alguma coisa nos outros papéis?
![Page 9: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/9.jpg)
Discussão sobre Listas Encadeadas
• Lista Encadeada: lista de elementos interligados, como em uma corrente
– O primeiro elemento aponta para o segundo
– O segundo aponta para o terceiro
– O terceiro aponta para o quarto
– ...
1
2
3
4
![Page 10: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/10.jpg)
Discussão sobre Listas Encadeadas
• Lista Encadeada: lista de elementos interligados, como em uma corrente
• Para acrescentar outro elemento no fim?
• Criar o novo elemento
• Associá-lo à lista (encadeá-lo)
1
2
3 5
4
![Page 11: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/11.jpg)
Discussão sobre Listas Encadeadas
• Lista Encadeada: lista de elementos interligados, como em uma corrente
• Para acrescentar outro elemento no fim?
• Criar o novo elemento
• Associá-lo à lista (encadeá-lo)
1
2
3 5
4
Como criar novos
elementos?
Já vimos isso?
![Page 12: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/12.jpg)
RECORDANDO:
ALOCAÇÃO DINÂMICA DE MEMÓRIA
![Page 13: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/13.jpg)
Alocação Dinâmica de Memória
• Alocar memória estaticamente: declarar
– int, float, char etc.
• Alocação dinâmica?
– Reservar no momento necessário
– Liberar quando não for mais necessário
• Reservar: new
• Liberar: delete
![Page 14: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/14.jpg)
Alocação Dinâmica de Memória
• Modo de Usar: new e delete
int *p;
p = new int;
*p = 10;
cout << p << endl;
cout << *p << endl;
delete p;
• Acompanhe os exemplos
![Page 15: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/15.jpg)
REPRESENTANDO LISTAS ENCADEADAS
![Page 16: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/16.jpg)
Representando Listas Encadeadas • Como vimos na dinâmica:
– Lista encadeada é composta por nós
• Um nó tem a função de...
– Guardar um elemento da lista
• Que outra informação tem o nó?
– Um ponteiro que indique o próximo nó
• E quando não há um próximo nó?
– Ajustamos o ponteiro para valer NULL
• Onde começa uma lista encadeada?
– Precisamos de um ponteiro para isso!
Valor 1
Valor 2
Valor 3
NULL
![Page 17: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/17.jpg)
Representando Listas Encadeadas
Valor 1
Valor 2
Valor 3
NULL
Cada elemento da lista encadeada é
uma struct
Criaremos uma struct chamada
no
![Page 18: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/18.jpg)
Representando Listas Encadeadas
Valor 1
Valor 2
Valor 3
NULL
Cada “no” é composto de uma
informação
E de um ponteiro para outro “no”
![Page 19: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/19.jpg)
Representando Listas Encadeadas
Valor 1
Valor 2
Valor 3
NULL
struct no { int valor; no * ptr; };
O primeiro nó é apontado por um simples ponteiro
![Page 20: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/20.jpg)
Representando Listas Encadeadas
Valor 1
Valor 2
Valor 3
NULL
struct no { int valor; no *ptr; }; no *lista;
![Page 21: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/21.jpg)
INICIALIZANDO LISTAS ENCADEADAS E
INSERINDO NÓS
![Page 22: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/22.jpg)
Listas Encadeadas: Inicializando NULL
no *lista = NULL;
Quando criamos uma lista, ela está vazia
lista
![Page 23: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/23.jpg)
Listas Encadeadas: Inserção
1
NULL
NULL
no *tmp; tmp = new no; tmp->valor = 1; tmp->ptr = NULL
Como criamos um elemento?
lista
tmp
![Page 24: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/24.jpg)
Listas Encadeadas: Inserção
1
NULL
NULL
if (lista == NULL) { lista = tmp; }
Como colocar o elemento na lista?
lista
tmp
![Page 25: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/25.jpg)
Listas Encadeadas: Inserção
1
NULL if (lista == NULL) { lista = tmp; }
Como colocar o elemento na lista?
lista
tmp
![Page 26: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/26.jpg)
Listas Encadeadas: Inserção
1
NULL
if (lista == NULL) { lista = tmp; }
E para acrescentar um outro elemento?
2
NULL
lista
tmp
![Page 27: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/27.jpg)
Listas Encadeadas: Inserção
1
NULL
if (lista == NULL) { lista = tmp; } else { tmp->ptr = lista }
E para acrescentar um outro elemento?
2
lista
tmp
![Page 28: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/28.jpg)
Listas Encadeadas: Inserção
1
NULL
if (lista == NULL) { lista = tmp; } else { tmp->ptr = lista lista = tmp; }
E para acrescentar um outro elemento?
2
lista
tmp
![Page 29: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/29.jpg)
Listas Encadeadas: Inserção
1
NULL
if (lista == NULL) { lista = tmp; } else { tmp->ptr = lista lista = tmp; }
E para acrescentar um outro elemento?
2
lista
tmp 3
NULL
![Page 30: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/30.jpg)
Listas Encadeadas: Inserção
1
NULL
if (lista == NULL) { lista = tmp; } else { tmp->ptr = lista lista = tmp; }
E para acrescentar um outro elemento?
2
lista
tmp 3
![Page 31: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/31.jpg)
Listas Encadeadas: Inserção
1
NULL
if (lista == NULL) { lista = tmp; } else { tmp->ptr = lista lista = tmp; }
E para acrescentar um outro elemento?
2
lista
tmp 3
![Page 32: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/32.jpg)
Listas Encadeadas: Listar/Percorrer
1
NULL
Como percorrer uma lista encadeada?
2
lista
3
Basta seguir os ponteiros...
![Page 33: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/33.jpg)
Listas Encadeadas: Listar/Percorrer
1
NULL
Como percorrer uma lista encadeada?
2
lista
3
Basta seguir os ponteiros...
![Page 34: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/34.jpg)
Listas Encadeadas: Listar/Percorrer
1
NULL
Como percorrer uma lista encadeada?
2
lista
3
Basta seguir os ponteiros...
![Page 35: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/35.jpg)
Listas Encadeadas: Listar/Percorrer
1
NULL
Como percorrer uma lista encadeada?
2
lista
3
Basta seguir os ponteiros...
![Page 36: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/36.jpg)
Listas Encadeadas: Listar/Percorrer
1
NULL
Como percorrer uma lista encadeada?
2
lista
3
Basta seguir os ponteiros...
![Page 37: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/37.jpg)
Listas Encadeadas: Listar/Percorrer
1
NULL
Como percorrer uma lista encadeada?
2
lista
3
Basta seguir os ponteiros...
![Page 38: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/38.jpg)
Listas Encadeadas: Listar/Percorrer
1
NULL
Como percorrer uma lista encadeada?
2
lista
3
Basta seguir os ponteiros...
![Page 39: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/39.jpg)
Listas Encadeadas: Listar/Percorrer
1
NULL
Como percorrer uma lista encadeada?
2
lista
3
Basta seguir os ponteiros...
![Page 40: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/40.jpg)
Listas Encadeadas: Listar/Percorrer
1
Como percorrer uma lista encadeada?
2
lista
3
Basta seguir os ponteiros...
![Page 41: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/41.jpg)
Listas Encadeadas: Remoção
1
NULL
Como remover o primeiro elemento?
2
lista
3
if (lista != NULL) { tmp = lista->ptr; lista->ptr = tmp->ptr; delete tmp; }
![Page 42: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/42.jpg)
Listas Encadeadas: Remoção
1
NULL
Como remover o primeiro elemento?
2
lista
3
if (lista != NULL) { tmp = lista->ptr; lista->ptr = tmp->ptr; delete tmp; }
![Page 43: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/43.jpg)
Listas Encadeadas: Remoção
1
NULL
Como remover o primeiro elemento?
2
lista
tmp 3
if (lista != NULL) { tmp = lista->ptr; lista->ptr = tmp->ptr; delete tmp; }
![Page 44: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/44.jpg)
Listas Encadeadas: Remoção
1
NULL
Como remover o primeiro elemento?
2
lista
tmp 3
if (lista != NULL) { tmp = lista->ptr; lista->ptr = tmp->ptr; delete tmp; }
![Page 45: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/45.jpg)
Listas Encadeadas: Remoção
1
NULL
Como remover o primeiro elemento?
2
lista
tmp 3
if (lista != NULL) { tmp = lista->ptr; lista->ptr = tmp->ptr; delete tmp; }
![Page 46: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/46.jpg)
Listas Encadeadas: Remoção
1
NULL
Como remover o primeiro elemento?
2
lista
tmp 3
if (lista != NULL) { tmp = lista->ptr; lista->ptr = tmp->ptr; delete tmp; }
![Page 47: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/47.jpg)
Listas Encadeadas: Remoção
1
NULL
Como remover o primeiro elemento?
2
lista
tmp
if (lista != NULL) { tmp = lista->ptr; lista->ptr = tmp->ptr; delete tmp; }
![Page 48: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/48.jpg)
Operações Com Listas Encadeadas
• Vistas – Inicialização
– Inserção no Início
– Listar / Percorrer
– Remover
• Para pensar: – Buscar
– Inserir no final
– Inserir no meio
– Remover do meio
![Page 49: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/49.jpg)
NA PRÁTICA:
IMPLEMENTANDO UMA LISTA ENCADEADA
![Page 50: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/50.jpg)
Implementação de Lista Encadeada
• Acompanhe o professor... Inicialização e inserção!
• Criação de uma lista com “n” nós
• Função Listar/Percorrer
• Função de Substituição de valores
• Função de Remoção de Nó
![Page 51: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/51.jpg)
EXERCÍCIOS DE FIXAÇÃO
![Page 52: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/52.jpg)
Exercício • Crie uma função para BUSCAR o primeiro nó
que possua um determinado valor:
no * buscar(no * lista, int valor)
• Modifique o programa principal para que o usuário possa verificar se um valor específico ocorre na lsita
• Após a tentativa de execução, “visite” pelo menos dois colegas e veja como ele implementou a solução; tente compreender a forma do colega de raciocinar.
![Page 53: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/53.jpg)
CONCLUSÕES
![Page 54: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/54.jpg)
Resumo
• As listas encadeadas permitem construir listas de tamanho abritrário
• Apenas a memória necessária é gasta
• O jeito de programar é diferente, mas as funções são muito parecidas!
• Como usar esse conceito para construir uma pilha?
![Page 55: ESTRUTURA DE ADOS - Caetano •Lista Encadeada: lista de elementos interligados, como em uma corrente •Para acrescentar outro elemento no fim? •Criar o novo elemento •Associá-lo](https://reader034.vdocuments.mx/reader034/viewer/2022043008/5f992d14476c2625602ca213/html5/thumbnails/55.jpg)
PERGUNTAS?