Lista Ligada Linear - Retirar elemento

Documentos relacionados
Estrutura de Dados Pilha (Stack)

Estrutura de Dados Polinómio

Tipos de Dados Dinâmicos

Aula 14 Listas Duplamente Encadeadas. prof Leticia Winkler

Árvores Binárias de Pesquisa (ABP) INF01203 Estruturas de Dados. Operações. Árvores Binárias de Pesquisa (ABP) Caminhamento Central à Esquerda

PROGRAMAÇÃO II 3. FILA DINÂMICA

Pilhas Acesso. Pilha. Fila. Listas lineares especiais. Pilhas e Filas. Listas lineares especiais mais usuais. Disciplina restrita

Estrutura de Dados Listas

Listas Lineares. continuando...

1. Listas sequenciais versus listas ligadas. Lista sequencial

PROGRAMAÇÃO II 3. PILHA DINÂMICA

Lista com descritor (continuação)

Listas - Outras. Listas Circulares Nós Cabeça Listas Duplamente Ligadas/Encadeadas Aplicações

FUNDAÇÃO EDUCACIONAL DE ITUIUTABA

Pilhas e Filas. Prof. Walteno Martins Parreira Júnior.

struct Nodo { int struct Nodo struct Nodo typedef struct Nodo *PNodo; int ConstruirLista (PNodo *H, PNodo *T) { int Criar

EAD PILHA - DEFINIÇÃO

Aula 11 Pilha Dinâmica. prof Leticia Winkler

Instituto de C. Linguagem C: Listas. Luis Martí Instituto de Computação Universidade Federal Fluminense -

Ponteiro e lista dinâmica

LISTAS - ARMAZENAMENTO NÃO SEQUENCIAL COM MEMÓRIA DINÂMICA

Árvores Binária de Busca. Prof. César Melo DCC/ICE/UFAM

REVISÃO DE PILHAS E FILAS. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

Ponteiros em Pascal. Variáveis ponteiros são aquelas que. Declaração em Pascal: var ptint: ^integer; {ponteiro para uma variável inteira } real} 1

Métodos Computacionais. Listas Encadeadas

Árvore Binária de Busca. Prof. César Melo

Lista Encadeada (Linked List)

Lista de Exercícios sobre Listas Implementadas por Encadeamento

Árvore Binária de Busca

UNIVERSIDADE DA BEIRA INTERIOR

Introdução a Programação. Listas Encadeadas

SCC 202 Prova 1. 28/9/2010 Resolução e Comentários

Prof. Walteno Martins Parreira Júnior

Listas Lineares Duplamente Encadeada (LLDE)

Estruturas de Dados. Módulo 12 - Filas. 9/8/2005 (c) Dept. Informática - PUC-Rio 1

INF1007: Programação 2 8 Listas Encadeadas. (c) Dept. Informática - PUC-Rio 1

Pilhas e Filas Acesso

ÁRVORE BINÁRIA DE BUSCA

Estrutura de Dados. Introdução a Ponteiros. Prof. Gerson Borges Estrutura de Dados I 1

Programação II. Listas Encadeadas (Linked Lists) Bruno Feijó Dept. de Informática, PUC-Rio

UNIVERSIDADE DA BEIRA INTERIOR

8. ÁRVORES ÁRVORES Niv 1 Niv 2 Niv 3 Niv 4. Até Introdução

Instituto de C. Filas. Luis Martí Instituto de Computação Universidade Federal Fluminense -

LISTAS LINEARES. Estrutura de Dados

Prof. Jesus José de Oliveira Neto

Algoritmos e Estrutura de Dados II. Árvore. Prof a Karina Oliveira.

1: unit ArvAVL; 2: { Unit que implementa uma arvore AVL } 3: interface 4: 5: type 6: Tipo_da_Chave = longint; 7: Tipo_do_Dado = record 8: Chave :

Listas: a última das 3 estruturas lineares (Pilhas, Filas e Listas)... árvores e grafos são não lineares!

ESTRUTURA DE DADOS E ALGORITMOS. Árvores Binárias de Busca. Cristina Boeres

LISTAS ENCADEADAS OU NÃO- SEQÜENCIAIS. Estrutura de Dados

Pilhas e Filas Encadeadas. Algoritmos e Estruturas de Dados I

Lista de Exercícios 04

SCC 202 Algoritmos e Estruturas de Dados I. Pilhas (Stacks) (implementação dinâmica)

- o primeiro elemento a entrar na fila é o primeiro a sair (FIFO First In First Out ).

Filas. Prof. Túlio Toffolo BCC202 Aula 12 Algoritmos e Estruturas de Dados I

UNIVERSIDADE DA BEIRA INTERIOR

Estrutura de Dados e Algoritmos e Programação e Computadores II. Aula 4: Listas Estáticas e Dinâmicas

AULA 04. Ocupação Circular Listas com Descritor

Estruturas de Dados. Cristina Gomes Fernandes. Estruturas de Dados p. 1

L I C R P * * V O * * A * A F * * * * *

Tipos e Estruturas de Dados Profa. Graça Nunes Lista de Exercícios (Listas Encadeadas, Duplamente Encadeadas e Circulares)

ÁRVORES ABB (ÁRVORES BINÁRIAS DE BUSCAS) Sérgio Carlos Portari Júnior

Estruturas de Dados. Cristina Gomes Fernandes. Estruturas de Dados p. 1

Estruturas de Dados I

Algoritmos de pesquisa

Aula 10 Alocação Dinâmica de Memória Listas Encadeadas. prof Leticia Winkler

Exemplos. Alocação Dinâmica de Pilhas. Pilhas. Pilhas. Implementação Seqüencial X Encadeada. SCE 182 Algoritmos e Estruturas de Dados I

Estruturas de Dados Aula 10: Listas (parte 2) 19/04/2011

Árvores B. Prof. Márcio Bueno. / Fonte: Material da Prof a Ana Eliza Lopes Moura

ESTRUTURAS DE DADOS E ALGORITMOS LISTA LIGADA

Aula 05: Listas Encadeadas. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP

Árvores Binárias de Busca

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Análise e Desenvolvimento de Algoritmos (2006/2007)

J. L. Rangel 1. provar que uma árvore binária de altura h tem, no mínimo, h+1 nós, e, no máximo, 2 h+1 1.

Professora Jeane Melo

Pilha e Fila. Pilha em C. Definir o registro que representará cada elemento da pilha.

Módulo 10 Listas Encadeadas

struct Nodo { int struct Nodo typedef struct Nodo *PNodo; PNodo ConstruirPilha () { int PNodo Criar printf scanf while Push printf scanf return

UNIVERSIDADE DE SÃO PAULO ICMC SCC 202 Algoritmos e Estrutura de Dados I - 2º Semestre 2010 Profa. Sandra Maria Aluísio;

Pesquisa em Memória Primária Árvores de Busca. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Estruturas de Dados Aula 11: TAD Pilha

Árvores & Árvores Binárias

Listas: nós de cabeçalho, listas não homogêneas, listas generalizadas

7. ESTRUTURAS DE DADOS ESTÁTICAS E DINÂMICAS

SCC Algoritmos e Estruturas de Dados I

Matrizes Esparsas. Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista

Estrutura de Dados. Ricardo José Cabeça de Souza Parte 9

EAD ARVORE BINÁRIA - ARMAZENAMENTO NÃO SEQUENCIAL COM VETORES

Estruturas de Dados Básicas

Estrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB

AULA 04 Ocupação Circular Listas com Descritor

SCC 202 Algoritmos e Estruturas de Dados I. Listas Lineares Encadeadas Alocação dinâmica

Estruturas de Dados Aula 12: Outras Implementações de Listas 18/04/2011

EAD Árvore árvore binária

Tipos Abstractos de Dados (TADs) e Java

Fontes Bibliográficas. Listas Circulares. Função Imprime

ESTRUTURA DE DADOS E ALGORITMOS HEAPS E LISTAS DE PRIORIDADES

Transcrição:

Lista Ligada Linear - Retirar elemento Pretende-se retirar o elemento com valor h da lista: Para isso é necessário modificar o valor do ponteiro para a caixa anterior à do elemento a ser retirado da lista: antpˆ.prox := pˆ.prox; Nem é necessário ter um apontador auxiliar para o elemento a retirar pois basta usar o apontador antp: MP II, 2006/2007 p.20/32

Lista Ligada Linear - Retirar elemento Pretende-se retirar o elemento com valor h da lista: Para isso é necessário modificar o valor do ponteiro para a caixa anterior à do elemento a ser retirado da lista: Nem é necessário ter um apontador auxiliar para o elemento a retirar pois basta usar o apontador antp: antpˆ.prox := antˆ.proxˆ.prox; No entanto, sem auxiliar, perde-se a caixa retirada, logo, dever-se-ia fazer: p := antˆ.prox; antpˆ.prox := antˆ.proxˆ.prox; ficando a caixa com o elemento retirado pendurada em p MP II, 2006/2007 p.20/32

Remover elementos numa lista ligada simples Retirar elemento à cabeça Pretende-se remover e libertar a cabeça da lista, devolvendo a cauda como nova lista procedure removec(var ponta : Seta); {* remove a cabeca da lista pendurada em ponta *} var aux : Seta; if ponta <> nil { se a lista tem elementos } then aux := ponta; ponta := pontaˆ.prox; dispose(aux); MP II, 2006/2007 p.21/32

Remover elementos numa lista ligada simples Retirar da cauda - Versão 2: Usar um só ponteiro auxiliar para percorrer a lista procedure removefim2(var ponta : Seta); {* remove o ultimo elemento da lista *}/ var antp: Seta; if ponta <> nil then if pontaˆ.prox = nil then { lista com 1 elemento } p := ponta; ponta := nil; else { lista com varios elementos } antp := ponta; while antpˆ.proxˆ.prox <> nil do antp := antpˆ.prox; p := antpˆ.prox; { elemento a remover } antpˆ.prox := nil; dispose(p); { fim removefim2 } MP II, 2006/2007 p.24/32

Remoção no fim com ponteiro auxiliar Remove o ultimo elemento da lista, apontado por ult procedure removet(var ponta, ult : Seta); var antult : Seta; if ponta <> nil then antult := devolveant(ponta, ultˆ.valor); if antult <> nil { se ultimo <> primeiro } then antult->prox := nil; dispose(ult); ult := antult; end else { ultimo = primeiro } dispose(ponta); ponta := nil; ult := nil; {if ponta} { fim removet } MP II, 2006/2007 p.25/32

Inserção de novo elemento à cabeça 1 Função para criar novo elemento e devolver um seu apontador: function novo elem( info : TipoValor): Seta; var pt : Seta; new(pt); ptˆ.valor := info; ptˆ.prox := nil; novo elem := pt; { fim novo elem } 2 Procedimento para inserir, à cabeça, novo elemento com a informação dada na lista dada: procedure inserec(var ponta : Seta; info : TipoValor); var novo : Seta; novo := novo elem(info); novoˆ.prox := ponta; ponta := novo; { fim inserec } MP II, 2006/2007 p.26/32

Inserção de novo elemento no fim da lista 1. Atravessar a lista até parar no último elemento 2. Inserir novo elemento procedure inserefim(var ponta : Seta; info : TipoValor); var novo, aux : Seta; novo := novo elem(info); if ponta = nil then ponta := novo { lista vazia } else { lista com 1 ou + elementos } aux := ponta; while auxˆ.prox <> nil do aux := auxˆ.prox; auxˆ.prox := novo; { fim inserec } MP II, 2006/2007 p.27/32

Inserção no fim com ponteiro auxiliar Insere após o ultimo elemento da lista, apontado por ult procedure inseret(valor : TipoValor; var ponta, ult : Seta); var novo : Seta; novo = novo_elem(valor); if ponta = nil { lista vazia } then ponta := novo; else ultˆ.prox = novo; { lista com 1 ou + elementos } ult = novo; { fim inseret } MP II, 2006/2007 p.28/32

Pesquisas gerais em Listas Ligadas Simples Uma pesquisa é uma travessia da lista, até à identificação de um certo elemento ou até esgotar a lista. Este caso é facilmente corrigido usando, para cabeça do ciclo de pesquisa, a instrução: antp := nil; p := ponta; while p <> nil do if pˆ.valor <> estainfo then antp := p; p := pˆ.prox; end MP II, 2006/2007 p.31/32

Função de pesquisa Procura o elemento da lista que contém estevalor e devolve um apontador para o elemento anterior function procura(estevalor : TipoValor; ponta: Seta): Seta; var ant : Seta; ant = nil; while ponta <> nil do if pontaˆ.valor <> estevalor then ant := ponta; ponta := pontaˆ.prox; {while} if ponta = nil then ant := nil; procura = ant; { fim procura } MP II, 2006/2007 p.32/32