A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Prof. Frederico Brito Fernandes Listas Encadeadas CONTEÚDO (1) Motivação (2) Definição (3) Operações (4) Comparando Vetores e Listas.

Apresentações semelhantes


Apresentação em tema: "Prof. Frederico Brito Fernandes Listas Encadeadas CONTEÚDO (1) Motivação (2) Definição (3) Operações (4) Comparando Vetores e Listas."— Transcrição da apresentação:

1 Prof. Frederico Brito Fernandes Listas Encadeadas CONTEÚDO (1) Motivação (2) Definição (3) Operações (4) Comparando Vetores e Listas Ligadas (5) Lista Circular (6) Lista Duplamente Encadeada

2 Frederico Brito Fernandes 2 Estrutura, Pesquisa e Ordenação de Dados Prever o número máximo de elementos no vetor durante a codificação –dimensionar o vetor com um número absurdamente alto isto levaria a um desperdício de memória que é inaceitável em diversas aplicações E se tivermos mais de 700 reservas simultâneas? Motivação... (1) Motivação RESERVAS AÉREAS nome e-ticket nome e-ticket nome e-ticket nome e-ticket nome e-ticket

3 Frederico Brito Fernandes 3 Estrutura, Pesquisa e Ordenação de Dados Solução Algumas aplicações requerem a inserção/deleção constantes de elementos Solução: –Usar listas ligadas Dado Dado Dado Dado/ (1) Motivação

4 Frederico Brito Fernandes 4 Estrutura, Pesquisa e Ordenação de Dados Listas Uma lista é uma estrutura de dados dinâmica. O número de nós de uma lista pode variar consideravelmente à medida que elementos são inseridos ou removidos. A natureza dinâmica de uma lista pode ser comparada à natureza estática de um vetor, cujo tamanho permanece constante. (2) Definição

5 Frederico Brito Fernandes 5 Estrutura, Pesquisa e Ordenação de Dados Lista Simplesmente Encadeada É uma estrutura de dados concreta que consiste de uma seqüência de nós Cada nó armazena –O conteúdo do elemento –Uma ligação para o próximo nó próximo dado nó ABCD (2) Definição

6 Frederico Brito Fernandes 6 Estrutura, Pesquisa e Ordenação de Dados O tipo Nó Possui os campos de informação Possui um campo de ligação com o próximo elemento do tipo Nó As operações sobre nó são: –Atualiza informação –Atualiza próximo –Recupera informação –Recupera próximo próximo dado nó (2) Definição

7 Frederico Brito Fernandes 7 Estrutura, Pesquisa e Ordenação de Dados Exemplo: Reserva Aérea Ex: #include typedef struct eReserva { char nome[60]; char e_ticket[20]; struct eReserva *prox; } tReserva; main(){ tReserva *cabeca, *segundoNo, *terceiroNo; cabeca = (tReserva *) malloc(sizeof(tReserva)); cabeca->prox = NULL; segundoNo = (tReserva *) malloc(sizeof(tReserva)); cabeca->prox = segundoNo; segundoNo->prox = NULL; terceiroNo = (tReserva *) malloc(sizeof(tReserva)); segundoNo->prox = aux; terceiroNo->prox = NULL; } nomee-ticketprox nomee-ticketproxcabeca nomee-ticketNULLsegundoNo struct eReserva nomee-ticketNULLterceiroNo tReserva (2) Definição

8 Frederico Brito Fernandes 8 Estrutura, Pesquisa e Ordenação de Dados O tipo Lista Encadeada Possui um campo que referencia o início da lista (também chamado de cabeça da lista) Possui um campo que representa o número total de nós da lista. As operações sobre lista encadeada são: –Inserir nó no início –Inserir nó no fim –Inserir nó no meio –Remover nó no início –Remover nó no fim –Remover nó no meio (2) Definição

9 Frederico Brito Fernandes 9 Estrutura, Pesquisa e Ordenação de Dados Inserir nó no início da lista 1.Aloque um novo nó 2.Faça o campo próximo do novo nó apontar para o nó cabeça da lista 3.Atualize o campo que aponta para a cabeça para apontar para o novo nó (3) Operações

10 Frederico Brito Fernandes 10 Estrutura, Pesquisa e Ordenação de Dados Inserir um nó no fim da lista Localize a cauda da lista Aloque um novo nó Faça o campo próximo do novo nó apontar para null Faça o campo próximo do nó cauda apontar para o novo nó (3) Operações

11 Frederico Brito Fernandes 11 Estrutura, Pesquisa e Ordenação de Dados Inserir um nó no meio da lista 1.Use uma variável auxiliar do tipo Nó para localizar o nó V após o qual se deseja inserir o novo nó 2.Aloque um novo nó 3.Faça o campo próximo do novo nó apontar para o nó apontado pelo campo próximo do nó V 4.Faça o campo próximo do nó V apontar para o novo nó V (3) Operações

12 Frederico Brito Fernandes 12 Estrutura, Pesquisa e Ordenação de Dados Remover um nó da cabeça da lista 1.Use uma variável auxiliar do tipo Nó para apontar para a cabeça da lista 2.Atualize o campo que aponta para a cabeça da lista para apontar para o próximo nó na lista 3.Desaloque o nó da variável auxiliar. (3) Operações

13 Frederico Brito Fernandes 13 Estrutura, Pesquisa e Ordenação de Dados 1.Use uma variável auxiliar do tipo Nó para localizar o penúltimo nó da lista 2.Use uma outra variável auxiliar do tipo Nó para apontar para a cauda da lista 3.Coloque o campo próximo do penúltimo nó da lista para null 4.Desaloque o último nó Remover um nó da cauda da lista (3) Operações

14 Frederico Brito Fernandes 14 Estrutura, Pesquisa e Ordenação de Dados Remover um nó do meio da lista 1.Use uma variável auxiliar do tipo Nó para localizar o nó anterior V ao nó a ser removido da lista 2.Use uma outra variável auxiliar do tipo Nó para apontar para o nó W a ser removido da lista 3.Faça o campo próximo do nó V apontar para o nó apontado pelo campo próximo do nó a ser removido da lista 4.Desaloque o nó W VW (3) Operações

15 Frederico Brito Fernandes 15 Estrutura, Pesquisa e Ordenação de Dados Forma de acesso Um item é acessado numa lista encadeada, percorrendo-se a lista a partir do início, porque não existe relação entre a posição de memória ocupada por um elemento de uma lista e sua posição dentro dessa lista. Um item é acessado num vetor através de uma única operação (usando o índice) Dado Dado Dado Dado/ 0123 (4) Comparando vetores e listas ligadas

16 Frederico Brito Fernandes 16 Estrutura, Pesquisa e Ordenação de Dados Flexibilidade Por outro lado o vetor não é uma estrutura de dados muito flexível –É preciso dimensioná-lo com um número máximo de elementos –Se o número de elementos que precisarmos armazenar exceder a dimensão do vetor, teremos um problema –Se o número de elementos que precisarmos armazenar no vetor for muito inferior à sua dimensão, estaremos subutilizando o espaço de memória reservado –Se precisarmos retirar ou inserir um elemento no meio do vetor, teremos de deslocar alguns elementos do vetor (4) Comparando vetores e listas ligadas

17 Frederico Brito Fernandes 17 Estrutura, Pesquisa e Ordenação de Dados Lista Circular O campo próximo do último nó aponta de volta para o primeiro nó, em vez de apontar para null. Não tem um "primeiro" ou um "último" nó natural. É preciso estabelecer um primeiro e um último nó por convenção. –Uma variável auxiliar do tipo Nó aponta para o último nó e o nó seguinte se torna o primeiro nó –Se a variável auxiliar do tipo Nó apontar para null então a lista circular está vazia (5) Lista Circular Dado Dado Dado Dado

18 Frederico Brito Fernandes 18 Estrutura, Pesquisa e Ordenação de Dados Lista Circular - Limitações Não se pode atravessar uma lista desse tipo no sentido contrário Para eliminar um nó de uma lista circularmente ligada, é preciso usar pelo menos uma variável auxiliar do tipo Nó –A solução é usar Lista Duplamente Encadeada (5) Lista Circular

19 Frederico Brito Fernandes 19 Estrutura, Pesquisa e Ordenação de Dados Lista Duplamente Encadeada O encadeamento simples também dificulta a retirada de um elemento da lista –Temos que percorrer a lista, elemento por elemento, para encontrarmos o elemento anterior àquele que queremos eliminar. A solução é usar uma lista duplamente encadeada (6) Lista Duplamente Encadeada Dado Dado Dado Dado

20 Frederico Brito Fernandes 20 Estrutura, Pesquisa e Ordenação de Dados Lista Duplamente Encadeada Cada nó armazena : –O conteúdo do elemento –A ligação para o próximo nó –A ligação para o nó anterior antprox dado nó (6) Lista Duplamente Encadeada

21 Frederico Brito Fernandes 21 Estrutura, Pesquisa e Ordenação de Dados Inserir novo elemento na lista A BX C AB C p ABC p X q pq (6) Lista Duplamente Encadeada

22 Frederico Brito Fernandes 22 Estrutura, Pesquisa e Ordenação de Dados E E E Remover elemento na lista A B CD p ABC D p ABC (6) Lista Duplamente Encadeada

23 Frederico Brito Fernandes 23 Estrutura, Pesquisa e Ordenação de Dados Exercício Escreva o pseudo-código para as operações de inserir e remover um elemento em lista duplamente encadeada (6) Lista Duplamente Encadeada


Carregar ppt "Prof. Frederico Brito Fernandes Listas Encadeadas CONTEÚDO (1) Motivação (2) Definição (3) Operações (4) Comparando Vetores e Listas."

Apresentações semelhantes


Anúncios Google