SlideShare uma empresa Scribd logo
1 de 18
ESTRUTURA DE DADOS
Listas
Lista
Simplesmente
Encadeada
• Cada elemento, chamado de nó, contém um
valor e um ponteiro que aponta para o
próximo nó na lista.
• Só existe o ponteiro para o próximo nó.
• O primeiro nó da lista é chamado de cabeça
(head) e o último nó é apontado por um
ponteiro especial chamado de cauda (tail),
que aponta para NULL ou para um valor
sentinela que indica o final da lista.
Representação
• Nesta imagem, cada nó é representado por um
retângulo contendo um valor (no caso, os
números 1 a 5) e uma seta que aponta para o
próximo nó na lista.
• O primeiro nó (cabeça) é o número 1, que
possui um ponteiro que aponta para o número
2, o segundo nó na lista.
• O último nó (cauda) é o número 5, que possui
um ponteiro que aponta para NULL, indicando
que este é o último nó na lista.
Operações Básicas
• As operações básicas suportadas por uma lista simplesmente encadeada são:
• inserir um novo nó no início da lista (push);
• inserir um novo nó no final da lista (append);
• remover o primeiro nó da lista (pop);
• percorrer a lista (traversal) e;
• buscar um nó com um determinado valor (search).
• A lista simplesmente encadeada é uma estrutura de dados flexível e eficiente para inserção e
remoção de elementos no início ou no final da lista, mas pode ser menos eficiente para acesso
aleatório aos elementos em comparação com outras estruturas de dados, como arrays e listas
duplamente encadeadas.
Aplicação
• As listas simplesmente encadeadas são amplamente utilizadas em algoritmos e programas que exigem
inserção e remoção frequentes de elementos no início ou no final da lista, como é o caso de:
1. Implementações de pilhas e filas: As pilhas e filas são estruturas de dados que utilizam listas
simplesmente encadeadas para armazenar os elementos. Em uma pilha, os elementos são adicionados
e removidos sempre no topo da pilha, enquanto em uma fila, os elementos são adicionados no final e
removidos no início da fila.
2. Gerenciamento de memória: Em linguagens de programação como C e C++, a alocação dinâmica de
memória é frequentemente realizada usando listas simplesmente encadeadas. Cada nó da lista
representa uma região de memória disponível, e a inserção e remoção de nós na lista é usada para
gerenciar a alocação e liberação de memória.
3. Sistemas de busca de arquivos: Alguns sistemas operacionais usam listas simplesmente encadeadas
para armazenar informações sobre arquivos em um diretório. Cada nó na lista representa um arquivo e
seu conteúdo, e os ponteiros entre os nós são usados para navegar entre os arquivos.
Lista Simplesmente Encadeada Ordenada
• Estrutura de dados na qual os elementos são armazenados em nós que contêm um valor e um ponteiro para o próximo nó na lista.
• Os nós são armazenados em ordem crescente ou decrescente, com base em seu valor.
• Ao contrário de uma lista simplesmente encadeada não ordenada, em que os elementos podem ser inseridos em qualquer ordem e a lista pode
precisar ser percorrida inteiramente para encontrar um elemento específico.
• Uma lista simplesmente encadeada ordenada permite que você localize rapidamente um elemento específico na lista.
• Isso é possível porque os elementos são armazenados em ordem, o que significa que você pode usar uma busca binária para localizar
rapidamente o elemento desejado.
• Inserir ou remover elementos de uma lista simplesmente encadeada ordenada pode ser mais complicado do que em uma lista simplesmente
encadeada não ordenada, já que você precisa manter a ordem dos elementos na lista.
• Para inserir um novo elemento na lista, você precisa encontrar o lugar correto para inseri-lo, levando em conta a ordem dos elementos
existentes.
• Para remover um elemento, você precisa atualizar os ponteiros para garantir que a lista permaneça ordenada após a remoção.
Representação
• Nesta lista, cada nó contém um valor numérico e um ponteiro para o
próximo nó na lista.
• Os valores são armazenados em ordem crescente, então o nó com o valor
2 está no início da lista e o nó com o valor 10 está no final.
• O ponteiro do último nó aponta para NULL, indicando que a lista termina
ali.
Aplicação
• As listas simplesmente encadeadas ordenadas são úteis em diversas aplicações em que é necessário armazenar e gerenciar
um conjunto de elementos que precisam estar em ordem.
• Alguns exemplos de uso de listas simplesmente encadeadas ordenadas incluem:
1. Listas telefônicas ou de contatos em que os nomes são armazenados em ordem alfabética para facilitar a busca.
2. Listas de tarefas em que as tarefas são organizadas por prioridade ou data de vencimento.
3. Sistemas de classificação ou ranking em que os elementos são organizados por ordem de pontuação ou
desempenho.
4. Bibliotecas que armazenam livros em ordem alfabética ou por categoria.
5. Armazenamento de dados em bancos de dados, em que os registros são armazenados em ordem crescente ou
decrescente com base em um valor chave.
• Esses são apenas alguns exemplos de aplicações em que as listas simplesmente encadeadas ordenadas podem ser úteis.
Basicamente, qualquer situação em que você precise armazenar e gerenciar um conjunto de elementos em ordem pode se
beneficiar do uso dessa estrutura de dados.
Lista Duplamente Encadeada
• Uma lista duplamente encadeada (também conhecida como "lista duplamente ligada" ou "lista duplamente encadeada") é
uma estrutura de dados na qual cada elemento, chamado de nó, contém um valor e dois ponteiros que apontam para o
próximo e o nó anterior na lista.
• Esses ponteiros permitem que a lista seja percorrida em ambas as direções - da esquerda para a direita (do primeiro ao
último nó) e da direita para a esquerda (do último ao primeiro nó).
• Em uma lista duplamente encadeada, a operação de inserção ou remoção de um elemento é mais eficiente do que em uma
lista simplesmente encadeada, pois não é necessário percorrer toda a lista a partir do início para chegar a um determinado
nó.
• Em vez disso, é possível navegar pelos ponteiros dos nós anterior e posterior para realizar essas operações.
• No entanto, a lista duplamente encadeada ocupa mais espaço em memória do que a lista simplesmente encadeada, pois
cada nó tem que armazenar dois ponteiros em vez de um.
Representação
• Observe que os ponteiros no nó "A" apontam
para o nó "null" à esquerda (ou seja, não há nó
anterior) e para o nó "B" à direita.
• Os ponteiros no nó "B" apontam para o nó "A"
à esquerda e o nó "C" à direita.
• Os ponteiros no nó "C" apontam para o nó "B"
à esquerda e para o nó "null" à direita (ou seja,
não há nó posterior).
Aplicação
• As listas duplamente encadeadas são amplamente utilizadas em programação para implementar diversas estruturas de dados,
como por exemplo:
1. Listas de reprodução de músicas ou vídeos, onde cada elemento da lista representa uma música ou vídeo e a lista
pode ser percorrida em ambas as direções para reproduzir as faixas na ordem desejada.
2. Editores de texto, onde os nós da lista representam as linhas de texto e a lista pode ser percorrida em ambas as
direções para editar ou excluir linhas de texto.
3. Navegação de páginas da web, onde os nós da lista representam as páginas visitadas e a lista pode ser percorrida em
ambas as direções para voltar ou avançar para páginas anteriormente visitadas.
4. Gerenciamento de memória em sistemas operacionais, onde a lista duplamente encadeada é usada para manter o
controle dos blocos de memória alocados e desalocados.
5. Filas de prioridade, onde cada elemento da lista possui um valor de prioridade e a lista pode ser ordenada com base
na prioridade de cada elemento.
• Esses são apenas alguns exemplos de aplicação prática de listas duplamente encadeadas, mas há muitas outras possibilidades
de uso para essa estrutura de dados flexível e versátil.
Lista Dinâmica Duplamente Encadeada Não
Ordenada
• Estrutura de dados em que cada elemento da lista contém dois ponteiros que apontam para o
elemento anterior e o próximo elemento na lista.
• Ao contrário de uma lista simplesmente encadeada, onde cada elemento possui apenas um
ponteiro para o próximo elemento, a lista dinâmica duplamente encadeada permite a
navegação em ambas as direções.
• Além disso, a lista dinâmica duplamente encadeada é não ordenada, o que significa que os
elementos podem estar em qualquer ordem.
• Isso permite a inserção e remoção de elementos em qualquer posição da lista de maneira
eficiente.
• Em geral, as operações básicas em uma lista dinâmica duplamente encadeada incluem a
inserção de elementos no início, no final ou em qualquer posição da lista, a remoção de
elementos da lista e a navegação pelos elementos em ambas as direções.
Representação
• Nesta imagem, os ponteiros NULL representam o início e o fim da
lista.
• Cada elemento da lista contém dois ponteiros: um apontando para o
elemento anterior e outro para o próximo elemento na lista.
• A seta <-> indica a direção da ligação entre os elementos.
Lista Dinâmica Duplamente Encadeada Ordenada
• É uma estrutura de dados em que cada elemento da lista tem um ponteiro para o
elemento anterior e outro para o elemento seguinte.
• Além disso, os elementos são armazenados em ordem crescente ou decrescente, de
acordo com algum critério de ordenação definido.
• Essa estrutura permite a inserção e remoção eficiente de elementos em qualquer posição
da lista, já que cada elemento mantém referências tanto para o elemento anterior quanto
para o seguinte.
• Além disso, a lista pode ser percorrida tanto do início para o fim quanto do fim para
o início, tornando-se útil em diversas aplicações.
• Por exemplo, uma lista dinâmica duplamente encadeada ordenada pode ser usada para
implementar um conjunto ordenado de elementos, em que a inserção, remoção e busca
de elementos podem ser realizadas de forma eficiente.
Representação:
• Nessa lista, cada elemento contém três campos: o ponteiro para o elemento anterior
(prev), o valor do elemento (data) e o ponteiro para o elemento seguinte (next). No
exemplo, os elementos são armazenados em ordem alfabética pelo valor do campo data,
e cada elemento mantém referências para o elemento anterior e posterior.
• O primeiro elemento da lista é o elemento A, que não tem um elemento anterior (prev =
NULL) e é seguido pelo elemento B. O último elemento da lista é o elemento H, que não
tem um elemento seguinte (next = NULL) e é precedido pelo elemento D.
• Essa estrutura de dados permite a inserção e remoção eficiente de elementos em
qualquer posição da lista, e a lista pode ser percorrida tanto do início para o fim quanto
do fim para o início.
Aplicação:
• Alguns exemplos de aplicação prática de lista dinâmica duplamente encadeada ordenada:
1. Gerenciamento de contatos: uma lista dinâmica duplamente encadeada ordenada pode ser usada para armazenar
contatos em ordem alfabética pelo nome ou sobrenome. Isso facilita a busca por um contato específico e permite a
inserção e remoção eficiente de contatos.
2. Sistemas de gerenciamento de arquivos: uma lista dinâmica duplamente encadeada ordenada pode ser usada para
armazenar arquivos em ordem alfabética ou de acordo com outros critérios, tornando mais fácil a busca e a navegação
pelos arquivos.
3. Implementação de conjuntos ordenados: uma lista dinâmica duplamente encadeada ordenada pode ser usada para
implementar conjuntos ordenados, em que os elementos são armazenados em ordem crescente ou decrescente. Isso
pode ser útil em algoritmos de ordenação ou em outras aplicações em que a ordem dos elementos é importante.
4. Implementação de cache LRU: uma lista dinâmica duplamente encadeada ordenada pode ser usada para implementar
um cache LRU (Least Recently Used), em que os elementos são armazenados em ordem de acesso, e o elemento menos
acessado é removido quando o cache atinge um limite de tamanho pré-definido.
• Esses são apenas alguns exemplos de aplicação prática de lista dinâmica duplamente encadeada ordenada. Essa estrutura de
dados pode ser útil em uma ampla variedade de aplicações em que a ordenação, inserção, remoção e busca eficiente de
elementos é importante.
Bibliografia
• Deitel, H. M., & Deitel, P. J. C: Como Programar. 6. ed. Porto Alegre. Bookman. 2011.
• Forbellone, A. L. V., & Eberspächer, H. F. Lógica de Programação: A construção de
algoritmos e estruturas de dados. 4. ed. São Paulo. Pearson Prentice Hall. 2005.
• Nívio Ziviani. Projeto de Algoritmos com Implementações em Pascal e C. 2. ed. São Paulo.
Pioneira Thomson Learning. 2004.
• Pereira, S. L. Algoritmos e Estruturas de Dados: Uma abordagem didática. 2. ed. Rio de
Janeiro. Brasport. 2009.
• Weiss, M. A. Estruturas de Dados e Seus Algoritmos. 2. ed. Rio de Janeiro. LTC. 1994.
• Ziviani, Nivio. Projeto de Algoritmos: com implementações em Pascal e C. 3. ed. São
Paulo. Cengage Learning. 2011.
O professor

Mais conteúdo relacionado

Semelhante a Estruturas de Dados: Listas, fundamentos.

Semelhante a Estruturas de Dados: Listas, fundamentos. (14)

Listas circulares ed
Listas circulares edListas circulares ed
Listas circulares ed
 
Usar explicação 01
Usar explicação 01Usar explicação 01
Usar explicação 01
 
Usar explicação 01
Usar explicação 01Usar explicação 01
Usar explicação 01
 
Pesquisa em memória primária
Pesquisa em memória primáriaPesquisa em memória primária
Pesquisa em memória primária
 
Csharp fundamentals
Csharp fundamentalsCsharp fundamentals
Csharp fundamentals
 
Listas em C
Listas em CListas em C
Listas em C
 
Pilha e Fila Dinamica
Pilha e Fila DinamicaPilha e Fila Dinamica
Pilha e Fila Dinamica
 
Slide Share s2 Rodd
Slide Share s2 RoddSlide Share s2 Rodd
Slide Share s2 Rodd
 
Slide Semana2 Rodrigo2
Slide Semana2 Rodrigo2Slide Semana2 Rodrigo2
Slide Semana2 Rodrigo2
 
Top0
Top0Top0
Top0
 
Top0
Top0Top0
Top0
 
Slide Semana2 Rodrigo
Slide Semana2 RodrigoSlide Semana2 Rodrigo
Slide Semana2 Rodrigo
 
Seminário - Java Collections
Seminário - Java CollectionsSeminário - Java Collections
Seminário - Java Collections
 
Java: strings e arrays
Java: strings e arraysJava: strings e arrays
Java: strings e arrays
 

Mais de SchoolByte

Utilizando funções em C: modularizando os programas.
Utilizando funções em C: modularizando os programas.Utilizando funções em C: modularizando os programas.
Utilizando funções em C: modularizando os programas.SchoolByte
 
Laços de repetição em C.
Laços de repetição em C.Laços de repetição em C.
Laços de repetição em C.SchoolByte
 
Introdução a linguagem de programação C
Introdução a linguagem de programação CIntrodução a linguagem de programação C
Introdução a linguagem de programação CSchoolByte
 
Estruturas de repetição e controle de fluxo: conceitos
Estruturas de repetição e controle de fluxo: conceitosEstruturas de repetição e controle de fluxo: conceitos
Estruturas de repetição e controle de fluxo: conceitosSchoolByte
 
Utilizando estruturas em linguagem C: structs.
Utilizando estruturas em linguagem C: structs.Utilizando estruturas em linguagem C: structs.
Utilizando estruturas em linguagem C: structs.SchoolByte
 
Vetores e Matrizes em C.
Vetores e Matrizes em C.Vetores e Matrizes em C.
Vetores e Matrizes em C.SchoolByte
 
Variáveis: conceitos e funcionamento.
Variáveis: conceitos e funcionamento.Variáveis: conceitos e funcionamento.
Variáveis: conceitos e funcionamento.SchoolByte
 
Comandos de Controle de Fluxo: IF, SWITCH e Ternário em C
Comandos de Controle de Fluxo: IF, SWITCH e Ternário em CComandos de Controle de Fluxo: IF, SWITCH e Ternário em C
Comandos de Controle de Fluxo: IF, SWITCH e Ternário em CSchoolByte
 
Utilizando ponteiros em C.
Utilizando ponteiros em C.Utilizando ponteiros em C.
Utilizando ponteiros em C.SchoolByte
 
Tutorial Visual do Open-Sankoré
Tutorial Visual do Open-SankoréTutorial Visual do Open-Sankoré
Tutorial Visual do Open-SankoréSchoolByte
 
Tutorial Visual do Dropbox
Tutorial Visual do DropboxTutorial Visual do Dropbox
Tutorial Visual do DropboxSchoolByte
 

Mais de SchoolByte (11)

Utilizando funções em C: modularizando os programas.
Utilizando funções em C: modularizando os programas.Utilizando funções em C: modularizando os programas.
Utilizando funções em C: modularizando os programas.
 
Laços de repetição em C.
Laços de repetição em C.Laços de repetição em C.
Laços de repetição em C.
 
Introdução a linguagem de programação C
Introdução a linguagem de programação CIntrodução a linguagem de programação C
Introdução a linguagem de programação C
 
Estruturas de repetição e controle de fluxo: conceitos
Estruturas de repetição e controle de fluxo: conceitosEstruturas de repetição e controle de fluxo: conceitos
Estruturas de repetição e controle de fluxo: conceitos
 
Utilizando estruturas em linguagem C: structs.
Utilizando estruturas em linguagem C: structs.Utilizando estruturas em linguagem C: structs.
Utilizando estruturas em linguagem C: structs.
 
Vetores e Matrizes em C.
Vetores e Matrizes em C.Vetores e Matrizes em C.
Vetores e Matrizes em C.
 
Variáveis: conceitos e funcionamento.
Variáveis: conceitos e funcionamento.Variáveis: conceitos e funcionamento.
Variáveis: conceitos e funcionamento.
 
Comandos de Controle de Fluxo: IF, SWITCH e Ternário em C
Comandos de Controle de Fluxo: IF, SWITCH e Ternário em CComandos de Controle de Fluxo: IF, SWITCH e Ternário em C
Comandos de Controle de Fluxo: IF, SWITCH e Ternário em C
 
Utilizando ponteiros em C.
Utilizando ponteiros em C.Utilizando ponteiros em C.
Utilizando ponteiros em C.
 
Tutorial Visual do Open-Sankoré
Tutorial Visual do Open-SankoréTutorial Visual do Open-Sankoré
Tutorial Visual do Open-Sankoré
 
Tutorial Visual do Dropbox
Tutorial Visual do DropboxTutorial Visual do Dropbox
Tutorial Visual do Dropbox
 

Último

LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOLEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOColégio Santa Teresinha
 
Pedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxPedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxleandropereira983288
 
[Bloco 7] Recomposição das Aprendizagens.pptx
[Bloco 7] Recomposição das Aprendizagens.pptx[Bloco 7] Recomposição das Aprendizagens.pptx
[Bloco 7] Recomposição das Aprendizagens.pptxLinoReisLino
 
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptxSlides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptxLuizHenriquedeAlmeid6
 
Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalJacqueline Cerqueira
 
“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptx“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptxthaisamaral9365923
 
E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?Rosalina Simão Nunes
 
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasCenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasRosalina Simão Nunes
 
D9 RECONHECER GENERO DISCURSIVO SPA.pptx
D9 RECONHECER GENERO DISCURSIVO SPA.pptxD9 RECONHECER GENERO DISCURSIVO SPA.pptx
D9 RECONHECER GENERO DISCURSIVO SPA.pptxRonys4
 
1.ª Fase do Modernismo Brasileira - Contexto histórico, autores e obras.
1.ª Fase do Modernismo Brasileira - Contexto histórico, autores e obras.1.ª Fase do Modernismo Brasileira - Contexto histórico, autores e obras.
1.ª Fase do Modernismo Brasileira - Contexto histórico, autores e obras.MrPitobaldo
 
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxSlides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxLuizHenriquedeAlmeid6
 
trabalho wanda rocha ditadura
trabalho wanda rocha ditaduratrabalho wanda rocha ditadura
trabalho wanda rocha ditaduraAdryan Luiz
 
CD_B3_C_ Criar e editar conteúdos digitais em diferentes formatos_índice.pdf
CD_B3_C_ Criar e editar conteúdos digitais em diferentes formatos_índice.pdfCD_B3_C_ Criar e editar conteúdos digitais em diferentes formatos_índice.pdf
CD_B3_C_ Criar e editar conteúdos digitais em diferentes formatos_índice.pdfManuais Formação
 
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBCRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBAline Santana
 
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEMCOMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEMVanessaCavalcante37
 
Programa de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades MotorasPrograma de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades MotorasCassio Meira Jr.
 
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Mary Alvarenga
 

Último (20)

LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOLEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
 
Pedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxPedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptx
 
[Bloco 7] Recomposição das Aprendizagens.pptx
[Bloco 7] Recomposição das Aprendizagens.pptx[Bloco 7] Recomposição das Aprendizagens.pptx
[Bloco 7] Recomposição das Aprendizagens.pptx
 
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptxSlides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
 
Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem Organizacional
 
“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptx“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptx
 
E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?
 
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasCenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
 
D9 RECONHECER GENERO DISCURSIVO SPA.pptx
D9 RECONHECER GENERO DISCURSIVO SPA.pptxD9 RECONHECER GENERO DISCURSIVO SPA.pptx
D9 RECONHECER GENERO DISCURSIVO SPA.pptx
 
1.ª Fase do Modernismo Brasileira - Contexto histórico, autores e obras.
1.ª Fase do Modernismo Brasileira - Contexto histórico, autores e obras.1.ª Fase do Modernismo Brasileira - Contexto histórico, autores e obras.
1.ª Fase do Modernismo Brasileira - Contexto histórico, autores e obras.
 
CINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULACINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULA
 
Bullying, sai pra lá
Bullying,  sai pra láBullying,  sai pra lá
Bullying, sai pra lá
 
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxSlides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
 
trabalho wanda rocha ditadura
trabalho wanda rocha ditaduratrabalho wanda rocha ditadura
trabalho wanda rocha ditadura
 
CD_B3_C_ Criar e editar conteúdos digitais em diferentes formatos_índice.pdf
CD_B3_C_ Criar e editar conteúdos digitais em diferentes formatos_índice.pdfCD_B3_C_ Criar e editar conteúdos digitais em diferentes formatos_índice.pdf
CD_B3_C_ Criar e editar conteúdos digitais em diferentes formatos_índice.pdf
 
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBCRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
 
Em tempo de Quaresma .
Em tempo de Quaresma                            .Em tempo de Quaresma                            .
Em tempo de Quaresma .
 
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEMCOMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
 
Programa de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades MotorasPrograma de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades Motoras
 
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
 

Estruturas de Dados: Listas, fundamentos.

  • 2. Lista Simplesmente Encadeada • Cada elemento, chamado de nó, contém um valor e um ponteiro que aponta para o próximo nó na lista. • Só existe o ponteiro para o próximo nó. • O primeiro nó da lista é chamado de cabeça (head) e o último nó é apontado por um ponteiro especial chamado de cauda (tail), que aponta para NULL ou para um valor sentinela que indica o final da lista.
  • 3. Representação • Nesta imagem, cada nó é representado por um retângulo contendo um valor (no caso, os números 1 a 5) e uma seta que aponta para o próximo nó na lista. • O primeiro nó (cabeça) é o número 1, que possui um ponteiro que aponta para o número 2, o segundo nó na lista. • O último nó (cauda) é o número 5, que possui um ponteiro que aponta para NULL, indicando que este é o último nó na lista.
  • 4. Operações Básicas • As operações básicas suportadas por uma lista simplesmente encadeada são: • inserir um novo nó no início da lista (push); • inserir um novo nó no final da lista (append); • remover o primeiro nó da lista (pop); • percorrer a lista (traversal) e; • buscar um nó com um determinado valor (search). • A lista simplesmente encadeada é uma estrutura de dados flexível e eficiente para inserção e remoção de elementos no início ou no final da lista, mas pode ser menos eficiente para acesso aleatório aos elementos em comparação com outras estruturas de dados, como arrays e listas duplamente encadeadas.
  • 5. Aplicação • As listas simplesmente encadeadas são amplamente utilizadas em algoritmos e programas que exigem inserção e remoção frequentes de elementos no início ou no final da lista, como é o caso de: 1. Implementações de pilhas e filas: As pilhas e filas são estruturas de dados que utilizam listas simplesmente encadeadas para armazenar os elementos. Em uma pilha, os elementos são adicionados e removidos sempre no topo da pilha, enquanto em uma fila, os elementos são adicionados no final e removidos no início da fila. 2. Gerenciamento de memória: Em linguagens de programação como C e C++, a alocação dinâmica de memória é frequentemente realizada usando listas simplesmente encadeadas. Cada nó da lista representa uma região de memória disponível, e a inserção e remoção de nós na lista é usada para gerenciar a alocação e liberação de memória. 3. Sistemas de busca de arquivos: Alguns sistemas operacionais usam listas simplesmente encadeadas para armazenar informações sobre arquivos em um diretório. Cada nó na lista representa um arquivo e seu conteúdo, e os ponteiros entre os nós são usados para navegar entre os arquivos.
  • 6. Lista Simplesmente Encadeada Ordenada • Estrutura de dados na qual os elementos são armazenados em nós que contêm um valor e um ponteiro para o próximo nó na lista. • Os nós são armazenados em ordem crescente ou decrescente, com base em seu valor. • Ao contrário de uma lista simplesmente encadeada não ordenada, em que os elementos podem ser inseridos em qualquer ordem e a lista pode precisar ser percorrida inteiramente para encontrar um elemento específico. • Uma lista simplesmente encadeada ordenada permite que você localize rapidamente um elemento específico na lista. • Isso é possível porque os elementos são armazenados em ordem, o que significa que você pode usar uma busca binária para localizar rapidamente o elemento desejado. • Inserir ou remover elementos de uma lista simplesmente encadeada ordenada pode ser mais complicado do que em uma lista simplesmente encadeada não ordenada, já que você precisa manter a ordem dos elementos na lista. • Para inserir um novo elemento na lista, você precisa encontrar o lugar correto para inseri-lo, levando em conta a ordem dos elementos existentes. • Para remover um elemento, você precisa atualizar os ponteiros para garantir que a lista permaneça ordenada após a remoção.
  • 7. Representação • Nesta lista, cada nó contém um valor numérico e um ponteiro para o próximo nó na lista. • Os valores são armazenados em ordem crescente, então o nó com o valor 2 está no início da lista e o nó com o valor 10 está no final. • O ponteiro do último nó aponta para NULL, indicando que a lista termina ali.
  • 8. Aplicação • As listas simplesmente encadeadas ordenadas são úteis em diversas aplicações em que é necessário armazenar e gerenciar um conjunto de elementos que precisam estar em ordem. • Alguns exemplos de uso de listas simplesmente encadeadas ordenadas incluem: 1. Listas telefônicas ou de contatos em que os nomes são armazenados em ordem alfabética para facilitar a busca. 2. Listas de tarefas em que as tarefas são organizadas por prioridade ou data de vencimento. 3. Sistemas de classificação ou ranking em que os elementos são organizados por ordem de pontuação ou desempenho. 4. Bibliotecas que armazenam livros em ordem alfabética ou por categoria. 5. Armazenamento de dados em bancos de dados, em que os registros são armazenados em ordem crescente ou decrescente com base em um valor chave. • Esses são apenas alguns exemplos de aplicações em que as listas simplesmente encadeadas ordenadas podem ser úteis. Basicamente, qualquer situação em que você precise armazenar e gerenciar um conjunto de elementos em ordem pode se beneficiar do uso dessa estrutura de dados.
  • 9. Lista Duplamente Encadeada • Uma lista duplamente encadeada (também conhecida como "lista duplamente ligada" ou "lista duplamente encadeada") é uma estrutura de dados na qual cada elemento, chamado de nó, contém um valor e dois ponteiros que apontam para o próximo e o nó anterior na lista. • Esses ponteiros permitem que a lista seja percorrida em ambas as direções - da esquerda para a direita (do primeiro ao último nó) e da direita para a esquerda (do último ao primeiro nó). • Em uma lista duplamente encadeada, a operação de inserção ou remoção de um elemento é mais eficiente do que em uma lista simplesmente encadeada, pois não é necessário percorrer toda a lista a partir do início para chegar a um determinado nó. • Em vez disso, é possível navegar pelos ponteiros dos nós anterior e posterior para realizar essas operações. • No entanto, a lista duplamente encadeada ocupa mais espaço em memória do que a lista simplesmente encadeada, pois cada nó tem que armazenar dois ponteiros em vez de um.
  • 10. Representação • Observe que os ponteiros no nó "A" apontam para o nó "null" à esquerda (ou seja, não há nó anterior) e para o nó "B" à direita. • Os ponteiros no nó "B" apontam para o nó "A" à esquerda e o nó "C" à direita. • Os ponteiros no nó "C" apontam para o nó "B" à esquerda e para o nó "null" à direita (ou seja, não há nó posterior).
  • 11. Aplicação • As listas duplamente encadeadas são amplamente utilizadas em programação para implementar diversas estruturas de dados, como por exemplo: 1. Listas de reprodução de músicas ou vídeos, onde cada elemento da lista representa uma música ou vídeo e a lista pode ser percorrida em ambas as direções para reproduzir as faixas na ordem desejada. 2. Editores de texto, onde os nós da lista representam as linhas de texto e a lista pode ser percorrida em ambas as direções para editar ou excluir linhas de texto. 3. Navegação de páginas da web, onde os nós da lista representam as páginas visitadas e a lista pode ser percorrida em ambas as direções para voltar ou avançar para páginas anteriormente visitadas. 4. Gerenciamento de memória em sistemas operacionais, onde a lista duplamente encadeada é usada para manter o controle dos blocos de memória alocados e desalocados. 5. Filas de prioridade, onde cada elemento da lista possui um valor de prioridade e a lista pode ser ordenada com base na prioridade de cada elemento. • Esses são apenas alguns exemplos de aplicação prática de listas duplamente encadeadas, mas há muitas outras possibilidades de uso para essa estrutura de dados flexível e versátil.
  • 12. Lista Dinâmica Duplamente Encadeada Não Ordenada • Estrutura de dados em que cada elemento da lista contém dois ponteiros que apontam para o elemento anterior e o próximo elemento na lista. • Ao contrário de uma lista simplesmente encadeada, onde cada elemento possui apenas um ponteiro para o próximo elemento, a lista dinâmica duplamente encadeada permite a navegação em ambas as direções. • Além disso, a lista dinâmica duplamente encadeada é não ordenada, o que significa que os elementos podem estar em qualquer ordem. • Isso permite a inserção e remoção de elementos em qualquer posição da lista de maneira eficiente. • Em geral, as operações básicas em uma lista dinâmica duplamente encadeada incluem a inserção de elementos no início, no final ou em qualquer posição da lista, a remoção de elementos da lista e a navegação pelos elementos em ambas as direções.
  • 13. Representação • Nesta imagem, os ponteiros NULL representam o início e o fim da lista. • Cada elemento da lista contém dois ponteiros: um apontando para o elemento anterior e outro para o próximo elemento na lista. • A seta <-> indica a direção da ligação entre os elementos.
  • 14. Lista Dinâmica Duplamente Encadeada Ordenada • É uma estrutura de dados em que cada elemento da lista tem um ponteiro para o elemento anterior e outro para o elemento seguinte. • Além disso, os elementos são armazenados em ordem crescente ou decrescente, de acordo com algum critério de ordenação definido. • Essa estrutura permite a inserção e remoção eficiente de elementos em qualquer posição da lista, já que cada elemento mantém referências tanto para o elemento anterior quanto para o seguinte. • Além disso, a lista pode ser percorrida tanto do início para o fim quanto do fim para o início, tornando-se útil em diversas aplicações. • Por exemplo, uma lista dinâmica duplamente encadeada ordenada pode ser usada para implementar um conjunto ordenado de elementos, em que a inserção, remoção e busca de elementos podem ser realizadas de forma eficiente.
  • 15. Representação: • Nessa lista, cada elemento contém três campos: o ponteiro para o elemento anterior (prev), o valor do elemento (data) e o ponteiro para o elemento seguinte (next). No exemplo, os elementos são armazenados em ordem alfabética pelo valor do campo data, e cada elemento mantém referências para o elemento anterior e posterior. • O primeiro elemento da lista é o elemento A, que não tem um elemento anterior (prev = NULL) e é seguido pelo elemento B. O último elemento da lista é o elemento H, que não tem um elemento seguinte (next = NULL) e é precedido pelo elemento D. • Essa estrutura de dados permite a inserção e remoção eficiente de elementos em qualquer posição da lista, e a lista pode ser percorrida tanto do início para o fim quanto do fim para o início.
  • 16. Aplicação: • Alguns exemplos de aplicação prática de lista dinâmica duplamente encadeada ordenada: 1. Gerenciamento de contatos: uma lista dinâmica duplamente encadeada ordenada pode ser usada para armazenar contatos em ordem alfabética pelo nome ou sobrenome. Isso facilita a busca por um contato específico e permite a inserção e remoção eficiente de contatos. 2. Sistemas de gerenciamento de arquivos: uma lista dinâmica duplamente encadeada ordenada pode ser usada para armazenar arquivos em ordem alfabética ou de acordo com outros critérios, tornando mais fácil a busca e a navegação pelos arquivos. 3. Implementação de conjuntos ordenados: uma lista dinâmica duplamente encadeada ordenada pode ser usada para implementar conjuntos ordenados, em que os elementos são armazenados em ordem crescente ou decrescente. Isso pode ser útil em algoritmos de ordenação ou em outras aplicações em que a ordem dos elementos é importante. 4. Implementação de cache LRU: uma lista dinâmica duplamente encadeada ordenada pode ser usada para implementar um cache LRU (Least Recently Used), em que os elementos são armazenados em ordem de acesso, e o elemento menos acessado é removido quando o cache atinge um limite de tamanho pré-definido. • Esses são apenas alguns exemplos de aplicação prática de lista dinâmica duplamente encadeada ordenada. Essa estrutura de dados pode ser útil em uma ampla variedade de aplicações em que a ordenação, inserção, remoção e busca eficiente de elementos é importante.
  • 17. Bibliografia • Deitel, H. M., & Deitel, P. J. C: Como Programar. 6. ed. Porto Alegre. Bookman. 2011. • Forbellone, A. L. V., & Eberspächer, H. F. Lógica de Programação: A construção de algoritmos e estruturas de dados. 4. ed. São Paulo. Pearson Prentice Hall. 2005. • Nívio Ziviani. Projeto de Algoritmos com Implementações em Pascal e C. 2. ed. São Paulo. Pioneira Thomson Learning. 2004. • Pereira, S. L. Algoritmos e Estruturas de Dados: Uma abordagem didática. 2. ed. Rio de Janeiro. Brasport. 2009. • Weiss, M. A. Estruturas de Dados e Seus Algoritmos. 2. ed. Rio de Janeiro. LTC. 1994. • Ziviani, Nivio. Projeto de Algoritmos: com implementações em Pascal e C. 3. ed. São Paulo. Cengage Learning. 2011.