Curso Superior de Tecnologia em Telemática                          Programação e Estruturas de DadosListas Lineares Dupla...
Objetivos§ Explorar conceitos importantes acerca das listas  duplamente encadeadas utilizando a linguagem C   § Organizaçã...
Motivação§ Você deve lembrar que a estrutura lista encadeada,  vista no módulo anterior, caracterizava-se por um  encadeam...
Desvantagens Lista EncadeadaŒ Em uma lista encadeada simples, não temos como percorrer eficientemente os elementos em orde...
Conceitos§ Para solucionar esses problemas, podemos formar o  que chamamos de listas duplamente encadeadas  § Semelhante à...
Vantagens§ Isto trará novas oportunidades ao novo TAD:   Œ Dado um elemento, poderemos acessar ambos    elementos adjacent...
Estruturação dos Dados§ Este novo TAD possui semelhanças com TListaEnc§ Representação de cada nó:  § estrutura contém os c...
Operações básicas§ A literatura é unânime quanto às operações básicas  realizadas numa lista duplamente encadeada:   Œ cri...
Algoritmos em C§ O que deverá ser feito pelo aluno:   § Escolha e instalação do ambiente a ser trabalhado no     laboratór...
Para um bom aproveitamento:§ Codifique os exemplos mostrados nestes slides e  verifique pontos de dúvidas§ Resolva todas a...
Upcoming SlideShare
Loading in...5
×

Pged 04

821

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
821
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
31
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Pged 04

  1. 1. Curso Superior de Tecnologia em Telemática Programação e Estruturas de DadosListas Lineares Duplamente Encadeadas Copyright©2010 Prof. César Rocha cesarocha@ifpb.edu.br 1
  2. 2. Objetivos§ Explorar conceitos importantes acerca das listas duplamente encadeadas utilizando a linguagem C § Organização e implementação, características, vantagens e desvantagens, regras de utilização, operações básicas e os algoritmos de implementação§ Estas estruturas são um pouco mais complicadas que as listas encadeadas (módulo anterior) § Contudo, tenta superar algumas limitações encontradas no TAD supracitado§ Este módulo também fará uso das regras de criação das bibliotecas em práticas de laboratório futuras 2
  3. 3. Motivação§ Você deve lembrar que a estrutura lista encadeada, vista no módulo anterior, caracterizava-se por um encadeamento simples entre os elementos § Havia a alocação dinâmica de cada elemento § Cada elemento armazenava um único ponteiro para o próximo elemento da lista§ Lembre-se que esta estrutura resolveu algumas das limitações encontradas nas listas seqüenciais § Pré-dimensionamento da lista § Sub-utilização de memória§ Porém, você pode ter notado que... 3
  4. 4. Desvantagens Lista EncadeadaŒ Em uma lista encadeada simples, não temos como percorrer eficientemente os elementos em ordem inversa, isto é, do final para o início da lista• O encadeamento simples também dificultava a remoção de um elemento da lista. Veja abaixo:Assim, mesmo quando sabíamos qual elemento íamos retirar, /* Parâmetros: lista = a listínhamos que percorrer a lista, elemento por elemento, até dado = passa posição = posencontrarmos o elemento anterior. Retorno: 1 em caso de suce */Isso se deve porque, dado um elemento, não tínhamos como int removerElemento(TListaEnc* TListaEnc aux;acessar diretamente o seu elemento anterior (ou antecessor) TListaEnc anterior;para redirecionar o ponteiro. int contador; // verifica se a lista esta vNote, na função de remoção, que a solução encontrada foi if(listaVazia(lista)) returndeclarar uma variável somente para podermos guardar oendereço do nó anterior ao elemento a ser removido da lista. 4
  5. 5. Conceitos§ Para solucionar esses problemas, podemos formar o que chamamos de listas duplamente encadeadas § Semelhante à lista encadeada, mas contém dois ponteiros (ou links) na estrutura do nó § Cada elemento agora tem um ponteiro para o próximo elemento e um ponteiro para o seu elemento anterior§ GraficamenteL João Maria Ana Edu § O primeiro nó não possui elemento anterior (o ponteiro do elemento anterior terá valor NULL) 5
  6. 6. Vantagens§ Isto trará novas oportunidades ao novo TAD: Œ Dado um elemento, poderemos acessar ambos elementos adjacentes: o próximo e o anterior • O ponteiro para o elemento anterior, bem como o endereço do próximo elemento serão manipulados diretamente Ž Inserção à direita e à esquerda de um nó qualquer • Se tivermos um ponteiro para o último elemento da lista, poderemos percorrê-la na ordem inversa •Também utilizará a memória de maneira eficiente com alocação dinâmica como fez o TAD do módulo anterior 6
  7. 7. Estruturação dos Dados§ Este novo TAD possui semelhanças com TListaEnc§ Representação de cada nó: § estrutura contém os campos dado, proximo e anterior /* estruturação */ /* estruturação */ /* estruturação */ /* estruturação */ typedef struct nolista { typedef struct typedef struct nolista { typedef int dado; int dado; int dado; int struct nolista* proximo; struct nolista* struct nolista* proximo; nolista* }no; }no; struct nolista* anterior; typedef no* TListaEnc; typedef no* TListaEnc; }no; typedef no* TListaDupEnc; § Onde: Onde: p->dado; TListaDupEnc *p ant dado prox p->prox; p->ant; 7
  8. 8. Operações básicas§ A literatura é unânime quanto às operações básicas realizadas numa lista duplamente encadeada: Œ criar uma lista vazia • verificar se uma lista está vazia Ž obter o tamanho da uma lista • obter o elemento de uma determinada posição na lista • obter a posição onde se encontra um determinado elemento ‘ inserir um novo elemento numa determinada posição na lista ’ remover um elemento de uma determinada posição na lista 8
  9. 9. Algoritmos em C§ O que deverá ser feito pelo aluno: § Escolha e instalação do ambiente a ser trabalhado no laboratório § Modelagem deste TAD (dados e operações) § Implementação dos algoritmos de operações básicas vistos em sala de aula na linguagem C § Utilização das regras de modelagem vistas no módulo anterior (criação de bibliotecas) e modularização § Implantação de código legível e bem documentado § Nomes de variáveis condizentes com o problema § Prática de laboratório 9
  10. 10. Para um bom aproveitamento:§ Codifique os exemplos mostrados nestes slides e verifique pontos de dúvidas§ Resolva todas as questões da prática de laboratório de listas duplamente encadeadas§ Procure o professor ou monitor da disciplina e questione conceitos, listas, etc.§ Não deixe para codificar tudo e acumular assunto para a primeira avaliação. § Este é apenas um dos assuntos abordados na prova! 10
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×