SlideShare uma empresa Scribd logo
1
Lista Encadeada Circular
Lista Duplamente Encadeada
2
Relembrando listas
encadeadas
 Um nó em uma Lista Encadeada possui
basicamente dois itens:
– ponteiro para o próximo
– informação armazenada
 Caso a informação não seja um dado simples:
criar vários campos, um para cada informação
Ex.: código, preço e quantidade de um produto
3
Relembrando listas
encadeadas
typedef struct tp_no {
int cod;
float preco;
int quant;
struct tp_no *prox;
} TPLISTA;
TPLISTA *lista;
...
lista->cod=1;
lista->preco=10.5;
lista->quant=20;
4
Listas Circulares
 O último elemento tem como próximo o
primeiro elemento da lista, formando um ciclo
 Útil quando:
– a busca é feita a partir de qualquer elemento
– não há ordenação na lista
 A rigor não existe "primeiro" ou "último"
 Ainda é necessário que exista um ponteiro
para algum elemento, para a localização da
lista
– por convenção, referência do primeiro ou do último
lista
4 1 8 5
5
Listagem
void listagem (tplista *t) {
tplista *p=t;
if (t!=NULL)
do {
printf("Info: %d", p->info);
p=p->prox;
} while (p!=t);
else
printf("Lista Circular vazia!");
}
6
Lista Circular
Inserção?
Remoção?
7
Lista Duplamente Encadeada
 Útil quando é preciso percorrer a lista na
ordem inversa
 Remoção de um elemento não precisa
guardar anterior
 Remoção de um elemento cujo ponteiro é
informado não precisar percorrer a fila toda
 Um conjunto maior de ligações precisam ser
atualizadas
8
 Cada nó possui dois ponteiros: um para o
elemento anterior e outro para o próximo
elemento (ant e prox)
proxant
a b c d
lista
Lista Duplamente Encadeada
9
Listas Duplamente Encadeada
typedef int tpitem;
typedef struct tp_no {
tpitem info;
struct tp_no *ant;
struct tp_no *prox;
} tplista;
tplista *lista;
10
Busca e Listagem
Busca e Listagem:
Código igual ao que é utilizado para a
Lista Simplesmente Encadeada
11
Inserção no Início
b e h
lista
a
 O novo elemento é encadeado no início da lista
 O seu próximo passa a ser o antigo primeiro
elemento e o seu anterior é NULL
– Se a lista não estiver vazia, o anterior do o antigo
primeiro passa a ser o novo elemento
 O ponteiro da lista é passado por referência e
atualizado para apontar para o novo nó
 A função retornar 1 ou zero indicando o sucesso
da inclusão
12
Inserção
int insere(tplista **t, tpitem e){
tplista *novo;
novo = aloca();
if (!novo)
return 0;
novo->info = e;
novo -> ant = NULL;
novo -> prox = *t;
if ((*t) != NULL)
(*t) -> ant = novo;
*t = novo;
return 1;
}
13
Remoção
 A remoção é mais trabalhosa, pois é preciso
acertar a cadeia nos dois sentidos
 Em compensação, pode-se retirar um
elemento conhecendo-se apenas o ponteiro
para ele
 Utiliza-se uma função de busca para localizar
o elemento e em seguida o encadeamento é
ajustado
 Ao final, o elemento é liberado
14
Remoção
 Sendo p o ponteiro para o elemento a ser
excluído, se o elemento estiver no meio da lista,
devemos fazer:
p->ant->prox = p->prox;
p->prox->ant = p->ant;
 Caso o elemento esteja em um extremo da lista,
existem outras condições:
– se p for o primeiro, não se pode referenciar p->ant,
pois ele é NULL; o mesmo acontece para p->prox
quando é o último
– além disso, se for o primeiro, é preciso atualizar o
ponteiro da lista
15
Remoção
e h
lista
a b
e h
lista
a b
p
p
17
 Cada nó possui dois ponteiros: um para o
elemento anterior e outro para o próximo
elemento (ant e prox)
 O anterior do primeiro é o último e o próximo do
último é o primeiro
a b c d
lista
Lista Duplamente Encadeada e
Circular

Mais conteúdo relacionado

PDF
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
PPTX
Tratamento de erros
PDF
Estrutura de dados - Filas
PDF
Pilha e filas
PDF
Estrutura de Dados Aula 04 - Listas Estáticas
PDF
Testes de Unidade com JUnit
PDF
Arrays (vetores) em Java
PPT
Java modulo 01 - Introdução
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Tratamento de erros
Estrutura de dados - Filas
Pilha e filas
Estrutura de Dados Aula 04 - Listas Estáticas
Testes de Unidade com JUnit
Arrays (vetores) em Java
Java modulo 01 - Introdução

Mais procurados (20)

PDF
Estrutura de Dados - Aula 03 - Ponteiros e Funções
PPTX
Estrutura de dados em Java - Filas com lista encadeada
PDF
Estrutura de Dados - Listas Encadeadas
PDF
Estrutura de Dados - Aula 04 - Listas Estáticas
PDF
Prova algoritmos
PPTX
Estrutura de dados em Java - Pilhas
PDF
Basic Sql Handouts
PPT
DSA chapter 1
PDF
Pipeline desdobramento escalonamento
PPTX
PDF
PBD Select e restrições para Select
PPT
Data structures
PPT
Lógica de Programação - Vetor
PPTX
Algoritmo recursivo
PPTX
Estrutura de Dados - Conceitos fundamentais
PDF
Estrutura de Dados - PILHAS
PDF
Funcionalidades Oracle
PDF
Estrutura de dados - Implementação de filas com listas
PPTX
Link list
PPTX
Array implementation and linked list as datat structure
Estrutura de Dados - Aula 03 - Ponteiros e Funções
Estrutura de dados em Java - Filas com lista encadeada
Estrutura de Dados - Listas Encadeadas
Estrutura de Dados - Aula 04 - Listas Estáticas
Prova algoritmos
Estrutura de dados em Java - Pilhas
Basic Sql Handouts
DSA chapter 1
Pipeline desdobramento escalonamento
PBD Select e restrições para Select
Data structures
Lógica de Programação - Vetor
Algoritmo recursivo
Estrutura de Dados - Conceitos fundamentais
Estrutura de Dados - PILHAS
Funcionalidades Oracle
Estrutura de dados - Implementação de filas com listas
Link list
Array implementation and linked list as datat structure
Anúncio

Destaque (20)

DOCX
Ringkasan dan jurnal penelitian penggunaan software open source
PPS
The impact of the economy of Gibraltar on the Campo de Gibraltar area
PPT
What is it about
PDF
Texto 1 clase 2 inferencia
PPTX
BVC ICT Train Pres
PPT
Causatives 2° modelo
PPT
Causatives 2° modelo
DOCX
Carbon Footprint of the life cycle of batteries – A key parameter for the sus...
PPT
Sickle cell
PPT
What is Credit? An illustrated story.
PPSX
Gibraltar presentation- October 2016
DOCX
Penggunaan software open source di kalangan mahasiswa
PPT
Presentación 2° noun clauses
PDF
Small rk sb1_pp49-62
PPT
Causatives 2° modelo
PPTX
PPT
ผู้หญิงทรงเอ กับผู้ชายทับแก้ว2
ODP
Credit Scores Explained. A Slideshow
DOC
Guia para fundamentación
PPTX
Advertising campaign
Ringkasan dan jurnal penelitian penggunaan software open source
The impact of the economy of Gibraltar on the Campo de Gibraltar area
What is it about
Texto 1 clase 2 inferencia
BVC ICT Train Pres
Causatives 2° modelo
Causatives 2° modelo
Carbon Footprint of the life cycle of batteries – A key parameter for the sus...
Sickle cell
What is Credit? An illustrated story.
Gibraltar presentation- October 2016
Penggunaan software open source di kalangan mahasiswa
Presentación 2° noun clauses
Small rk sb1_pp49-62
Causatives 2° modelo
ผู้หญิงทรงเอ กับผู้ชายทับแก้ว2
Credit Scores Explained. A Slideshow
Guia para fundamentación
Advertising campaign
Anúncio

Semelhante a Listas duplamente encadeadas (20)

PPTX
PDF
Usar explicação 01
PDF
Usar explicação 01
PDF
10 alocacao dinamica - listas ligadas
PDF
Estrutura de Dados - Aula 12 - Listas Duplamente Encadeadas
PDF
Pged 04
PPTX
Estrutura de Dados - Aula 06
PDF
Listas Estáticas Encadeadas usando linguagem C
PDF
Lista duplamente encadeada
PDF
Estrutura de Dados Aula 12 - Listas Duplamente Encadeadas
PPTX
Estrutura de dados em Java - Filas
PPTX
Capítulo 3 - Estruturas de dados do tipo listas
PDF
Estrutura de dados - Lista Circular Duplamente Encadeada e Matriz Esparsa
PDF
Lpiii dp-apostila
PDF
Lista encadeada de inteiros
PDF
Lista Encadeada Simples: Inserção no Final
PDF
Listas em estrutura de dados e algoritimos
PPTX
Estrutura de Dados Aula 09 - Listas simplesmente encadeadas
Usar explicação 01
Usar explicação 01
10 alocacao dinamica - listas ligadas
Estrutura de Dados - Aula 12 - Listas Duplamente Encadeadas
Pged 04
Estrutura de Dados - Aula 06
Listas Estáticas Encadeadas usando linguagem C
Lista duplamente encadeada
Estrutura de Dados Aula 12 - Listas Duplamente Encadeadas
Estrutura de dados em Java - Filas
Capítulo 3 - Estruturas de dados do tipo listas
Estrutura de dados - Lista Circular Duplamente Encadeada e Matriz Esparsa
Lpiii dp-apostila
Lista encadeada de inteiros
Lista Encadeada Simples: Inserção no Final
Listas em estrutura de dados e algoritimos
Estrutura de Dados Aula 09 - Listas simplesmente encadeadas

Mais de Jailson Torquato (6)

PPTX
Elementos do Sistema Operacionais
PPTX
Estrutura de repetição
PPTX
Estrutura de dados
PDF
Apostila de hardware
PDF
Apostila de sistemas_operacionais
PDF
O modelo osi e suas 7 camadas
Elementos do Sistema Operacionais
Estrutura de repetição
Estrutura de dados
Apostila de hardware
Apostila de sistemas_operacionais
O modelo osi e suas 7 camadas

Último (20)

PDF
Formação politica brasil_2017.pptx.pdf
PPTX
Aula 13 - Tópico Frasal - Argumentação.pptx
PDF
Uma Introdução às Ciências do Alcorão (Islam)
PPTX
Lição 8 EBD.pptxtudopossonaquelequemimfortalece
PDF
Um dia na casa do Mensageiro (que a paz e benção de Deus estejam com ele)
PDF
A provisão de jojuador (ramadã) islamismo
PPTX
disciplulado curso preparatorio para novos
PPTX
biossegurança e segurança no trabalho (6).pptx
PPTX
Realismo e Naturalismo: Aluísio Azevedo.
PDF
DAQUISIÇÃO E DESENVOLVIMENTO DA FALA 12 A 24 MESES
PPTX
INTRODUÇÃO AO ESTUDO DA ANATOMIA HUMANA [Salvo automaticamente].pptx
PDF
Organizador Curricular da Educação em Tempo Integral.pdf
PDF
embriologia_animal_aula_share_2026_semestre
PDF
A Revolução Francesa de 1789 slides história
PPT
HISTOLOGIA VEGETAL - tecidos vegetais.ppt
PDF
RELATÓRIO DE ESTÁGIO SURVISIONADO: NEUROPSICOPEDAGOGIA INSTITUCIONAL, CLÍNIC...
PDF
COMO OS CONTOS DE FADAS REFLETEM ARQUÉTIPOS_MEDOS E DESEJOS DO INCONSCIENTE H...
PPTX
NR11 - Treinamento Direcao Defensiva - 2023.pptx
PDF
A relação entre funções executivas e desempenho acadêmico em crianças com Tra...
PPTX
16. MODERNISMO - PRIMEIRA GERAÇÃO - EDIÇÃO 2021 (1).pptx
Formação politica brasil_2017.pptx.pdf
Aula 13 - Tópico Frasal - Argumentação.pptx
Uma Introdução às Ciências do Alcorão (Islam)
Lição 8 EBD.pptxtudopossonaquelequemimfortalece
Um dia na casa do Mensageiro (que a paz e benção de Deus estejam com ele)
A provisão de jojuador (ramadã) islamismo
disciplulado curso preparatorio para novos
biossegurança e segurança no trabalho (6).pptx
Realismo e Naturalismo: Aluísio Azevedo.
DAQUISIÇÃO E DESENVOLVIMENTO DA FALA 12 A 24 MESES
INTRODUÇÃO AO ESTUDO DA ANATOMIA HUMANA [Salvo automaticamente].pptx
Organizador Curricular da Educação em Tempo Integral.pdf
embriologia_animal_aula_share_2026_semestre
A Revolução Francesa de 1789 slides história
HISTOLOGIA VEGETAL - tecidos vegetais.ppt
RELATÓRIO DE ESTÁGIO SURVISIONADO: NEUROPSICOPEDAGOGIA INSTITUCIONAL, CLÍNIC...
COMO OS CONTOS DE FADAS REFLETEM ARQUÉTIPOS_MEDOS E DESEJOS DO INCONSCIENTE H...
NR11 - Treinamento Direcao Defensiva - 2023.pptx
A relação entre funções executivas e desempenho acadêmico em crianças com Tra...
16. MODERNISMO - PRIMEIRA GERAÇÃO - EDIÇÃO 2021 (1).pptx

Listas duplamente encadeadas

  • 1. 1 Lista Encadeada Circular Lista Duplamente Encadeada
  • 2. 2 Relembrando listas encadeadas  Um nó em uma Lista Encadeada possui basicamente dois itens: – ponteiro para o próximo – informação armazenada  Caso a informação não seja um dado simples: criar vários campos, um para cada informação Ex.: código, preço e quantidade de um produto
  • 3. 3 Relembrando listas encadeadas typedef struct tp_no { int cod; float preco; int quant; struct tp_no *prox; } TPLISTA; TPLISTA *lista; ... lista->cod=1; lista->preco=10.5; lista->quant=20;
  • 4. 4 Listas Circulares  O último elemento tem como próximo o primeiro elemento da lista, formando um ciclo  Útil quando: – a busca é feita a partir de qualquer elemento – não há ordenação na lista  A rigor não existe "primeiro" ou "último"  Ainda é necessário que exista um ponteiro para algum elemento, para a localização da lista – por convenção, referência do primeiro ou do último lista 4 1 8 5
  • 5. 5 Listagem void listagem (tplista *t) { tplista *p=t; if (t!=NULL) do { printf("Info: %d", p->info); p=p->prox; } while (p!=t); else printf("Lista Circular vazia!"); }
  • 7. 7 Lista Duplamente Encadeada  Útil quando é preciso percorrer a lista na ordem inversa  Remoção de um elemento não precisa guardar anterior  Remoção de um elemento cujo ponteiro é informado não precisar percorrer a fila toda  Um conjunto maior de ligações precisam ser atualizadas
  • 8. 8  Cada nó possui dois ponteiros: um para o elemento anterior e outro para o próximo elemento (ant e prox) proxant a b c d lista Lista Duplamente Encadeada
  • 9. 9 Listas Duplamente Encadeada typedef int tpitem; typedef struct tp_no { tpitem info; struct tp_no *ant; struct tp_no *prox; } tplista; tplista *lista;
  • 10. 10 Busca e Listagem Busca e Listagem: Código igual ao que é utilizado para a Lista Simplesmente Encadeada
  • 11. 11 Inserção no Início b e h lista a  O novo elemento é encadeado no início da lista  O seu próximo passa a ser o antigo primeiro elemento e o seu anterior é NULL – Se a lista não estiver vazia, o anterior do o antigo primeiro passa a ser o novo elemento  O ponteiro da lista é passado por referência e atualizado para apontar para o novo nó  A função retornar 1 ou zero indicando o sucesso da inclusão
  • 12. 12 Inserção int insere(tplista **t, tpitem e){ tplista *novo; novo = aloca(); if (!novo) return 0; novo->info = e; novo -> ant = NULL; novo -> prox = *t; if ((*t) != NULL) (*t) -> ant = novo; *t = novo; return 1; }
  • 13. 13 Remoção  A remoção é mais trabalhosa, pois é preciso acertar a cadeia nos dois sentidos  Em compensação, pode-se retirar um elemento conhecendo-se apenas o ponteiro para ele  Utiliza-se uma função de busca para localizar o elemento e em seguida o encadeamento é ajustado  Ao final, o elemento é liberado
  • 14. 14 Remoção  Sendo p o ponteiro para o elemento a ser excluído, se o elemento estiver no meio da lista, devemos fazer: p->ant->prox = p->prox; p->prox->ant = p->ant;  Caso o elemento esteja em um extremo da lista, existem outras condições: – se p for o primeiro, não se pode referenciar p->ant, pois ele é NULL; o mesmo acontece para p->prox quando é o último – além disso, se for o primeiro, é preciso atualizar o ponteiro da lista
  • 15. 15 Remoção e h lista a b e h lista a b p p
  • 16. 17  Cada nó possui dois ponteiros: um para o elemento anterior e outro para o próximo elemento (ant e prox)  O anterior do primeiro é o último e o próximo do último é o primeiro a b c d lista Lista Duplamente Encadeada e Circular