Algoritmos e estrutura de dados
|
|
|
- Débora Cerveira Beppler
- 7 Há anos
- Visualizações:
Transcrição
1 Algoritmos e estrutura de dados Listas Marco A L Barbosa cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual 4.0 Internacional.
2 Conteúdo Listas Listas encadeadas Arranjos dinâmicos Comparações Filas Pilhas Referências
3 Listas
4 Listas Uma Lista é um tipo abstrato de dados usado para armazenar uma sequência de elementos x 0, x 1,..., x n 1 n é o tamanho da lista xi está na posição i (i-ésima posição) xi precede x j para todo i < j < n xi sucede x j para todo n > i > j Uma lista pode aumentar ou diminuir de tamanho Operações comuns em listas Buscar um elemento Consultar um elemento em uma posição Inserir um elemento no início ou no final da lista Inserir um elemento em uma posição Remover um elemento Remover um elemento no início ou no final da lista Remover um elemento de uma posição Etc 4 / 59
5 Listas encadeadas
6 Listas encadeadas Vamos supor que não existisse arranjos em Python Neste caso, como representar uma lista de elementos? 6 / 59
7 Listas encadeadas Vamos supor que não existisse arranjos em Python Neste caso, como representar uma lista de elementos? Criando um encadeamento de instâncias de estruturas 6 / 59
8 Listas encadeadas Considere a seguinte estrutura class No(Struct): Representa um Nó em uma lista encadeada, valor : Qualquer - é o valor armazenado no nó prox : No - é uma refer^encia para o próximo nó def init (self, valor, prox): self.init(valor, prox) Vamos criar um encadeamento de instâncias da classe No Chamamos esta estrutura de lista encadeada 7 / 59
9 Listas encadeadas >>> xs = No(10, None) >>> xs No(10, None) 8 / 59
10 Listas encadeadas >>> xs = No(5, xs) >>> xs No(5, No(10, None)) 9 / 59
11 Listas encadeadas >>> xs = No(19, xs) >>> xs No(19, No(5, No(10, None))) 10 / 59
12 Listas encadeadas Vamos implementar alguns operações de listas usando listas encadeadas Para isto, vamos definir um classe ListaEncadeada class ListaEncadeada(Struct): Representa uma lista encadeada. _primeiro : No - é uma refer^encia para o primeiro nó da lista _ultimo : No - é uma refer^encia para o último nó da lista def init (self): self.init() self._primeiro = None self._ultimo = None O campo ultimo será útil para implementar inserção no final 11 / 59
13 Listas encadeadas Lembre-se que campos com o nome iniciados com são campos internos. Os campos internos não são especificados na criação da instância e não podem ser acessados pelos clientes da classe. No caso da classe ListaEncadeada isto significa que o cliente da classe não pode alterar os campos primeiro e ultimo diretamente, esses campos são alterados através dos métodos (a seguir) definidos na classe 12 / 59
14 Listas encadeadas Representação 13 / 59
15 Listas encadeadas / Inserção Ideia geral da inserção Tratamento especial para inserção no início e fim 14 / 59
16 Listas encadeadas / Inserção no início Inserção no início Criar um nó com o novo elemento na frete do primeiro Atualizar o primeiro para o novo nó Se o último for igual a None, o último passa referenciar o primeiro Análise do tempo de execução A quantidade de operações não depende da quantidade de nós na lista Portanto, o tempo de execução é O(1) 15 / 59
17 Listas encadeadas / Inserção no início def insere_inicio(lista, v): ListaEncadeada, Qualquer -> None Insere o valor v no início da lista. Exemplos: >>> xs = ListaEncadeada() >>> insere_inicio(xs, 3) >>> xs._primeiro No(3, None) >>> xs._ultimo No(3, None) >>> insere_inicio(xs, 1) >>> xs._primeiro No(1, No(3, None)) >>> xs._ultimo No(3, None) >>> insere_inicio(xs, 27) >>> xs._primeiro No(27, No(1, No(3, None))) >>> xs._ultimo No(3, None) 16 / 59
18 Listas encadeadas / Inserção no início def insere_inicio(lista, v):... lista._primeiro = No(v, lista._primeiro) if lista._ultimo == None: lista._ultimo = lista._primeiro 17 / 59
19 Listas encadeadas / Definição de métodos Vamos transformar está função em um método Um método é uma função definida dentro de uma classe 18 / 59
20 Listas encadeadas / Definição de métodos Vamos transformar está função em um método Um método é uma função definida dentro de uma classe Vantagens Os dados da estrutura e as funções que operam nestes dados ficam na mesma unidade sintática (class) É possível ter métodos com o mesmo nome em classes diferentes Polimorfismo 18 / 59
21 Listas encadeadas / Definição de métodos Como fazer a mudança? Colocar a função dentro da classe Modificar o nome do primeiro parâmetro para self (mudar todas as ocorrências do nome dentro da função) Alterar as chamadas de funções do tipo funcao(x,...) para chamadas de métodos x.funcao(...) 19 / 59
22 Listas encadeadas / Definição de métodos Como fazer a mudança? Colocar a função dentro da classe Modificar o nome do primeiro parâmetro para self (mudar todas as ocorrências do nome dentro da função) Alterar as chamadas de funções do tipo funcao(x,...) para chamadas de métodos x.funcao(...) Como escolher entre função ou método? Quando o primeiro argumento for do tipo da classe, definir como método, caso contrário, como uma função Requer experiência Observe com atenção as diferenças nos 2 próximos slides 19 / 59
23 Listas encadeadas / Definição de métodos Definição de insere inicio como função class ListaEncadeada(Struct): # descriç~ao omitida def init (self): # corpo omitido def insere_inicio(lista, v):... >>> xs = ListaEncadeada() >>> insere_inicio(xs, 3) >>> xs._primeiro No(3, None) >>> xs._ultimo No(3, None) # restante dos testes omitidos lista._primeiro = No(v, lista._primeiro) if lista._ultimo == None: lista._ultimo = lista._primeiro 20 / 59
24 Listas encadeadas / Definição de métodos Definição de insere inicio como método class ListaEncadeada(Struct): # descriç~ao omitida def init (self): # corpo omitido def insere_inicio(self, v):... >>> xs = ListaEncadeada() >>> xs.insere_inicio(3) >>> xs._primeiro No(3, None) >>> xs._ultimo No(3, None) # restante dos testes omitidos self._primeiro = No(v, self._primeiro) if self._ultimo == None: self._ultimo = self._primeiro 21 / 59
25 Listas encadeadas / Definição de métodos De agora em diante vamos definir funções como métodos quando isto for adequado 22 / 59
26 Listas encadeadas / Inserção no fim Inserção no fim Criar um nó com o novo elemento Se a lista está vazia, atualizar o primeiro e último para o novo nó Caso contrário colocar o novo nó após o último e atualizar o último Análise do tempo de execução A quantidade de operações não depende da quantidade de nós na lista Portanto, o tempo de execução é O(1) 23 / 59
27 Listas encadeadas / Inserção no fim def insere_fim(self, v): ListaEncadeada, Qualquer -> None Inser v no final da lista Exemplos: >>> xs = ListaEncadeada() >>> xs.insere_fim(3) >>> xs._primeiro No(3, None) >>> xs._ultimo No(3, None) >>> xs.insere_fim(10) >>> xs._primeiro No(3, No(10, None)) >>> xs._ultimo No(10, None) >>> xs.insere_fim(20) >>> xs._primeiro No(3, No(10, No(20, None))) >>> xs._ultimo No(20, None) 24 / 59
28 Listas encadeadas / Inserção no fim def insere_fim(self, v):... p = No(v, None) if self._primeiro == None: self._primeiro = p self._ultimo = p else: self._ultimo.prox = p self._ultimo = p 25 / 59
29 Listas encadeadas / Remoção Ideia geral da remoção Tratamento especial para remoção no início e fim 26 / 59
30 Listas encadeadas / Remoção no início Remoção no início Alterar o primeiro para referenciar o próximo do primeiro Se o novo primeiro é None, isto é, a lista ficou vazia, atualizar o último para None Análise do tempo de execução A quantidade de operações não depende da quantidade de nós na lista Portanto, o tempo de execução é O(1) 27 / 59
31 Listas encadeadas / Remoção no início # Veja os testes completos no arquivo listas.py def remove_inicio(self): ListaEncadeada -> Qualquer Remove o primeiro elemento da lista e devolve o valor removido. Lança uma exceç~ao se a lista estiver vazia. >>> xs = ListaEncadeada() >>> xs.insere_inicio(3) >>> xs.insere_inicio(5) >>> xs.remove_inicio() 5 >>> xs._primeiro No(3, None) >>> xs._ultimo No(3, None) >>> xs.remove_inicio() 3 >>> xs._primeiro == None True >>> xs._ultimo == None True 28 / 59
32 Listas encadeadas / Remoção no início # Veja os testes completos no arquivo listas.py def remove_inicio(self):... if self._primeiro == None: raise Exception( lista vazia ) v = self._primeiro.valor self._primeiro = self._primeiro.prox if self._primeiro == None: self._ultimo = None return v 29 / 59
33 Listas encadeadas / Remoção no fim Remoção no fim Se a lista tem apenas um nó, remover do início Senão procurar o penúltimo nó e remover o próximo (que é o último) Atualizar o último Análise do tempo de execução Para encontrar o penúltimo é necessário visitar n 1 nós Portanto, o tempo de execução é O(n) 30 / 59
34 Listas encadeadas / Remoção no fim # Veja os testes no arquivo listas.py def remove_fim(self): ListaEncadeada -> None Remove o último elemento da lista e devolve o valor removido. Lança uma exceç~ao se a lista estiver vazia. if self._primeiro == None: raise Exception( lista vazia ) if self._primeiro == self._ultimo: return self.remove_inicio() # procura o penúltimo nó p = self._primeiro while p.prox!= self._ultimo: p = p.prox return self._remove_prox(p) 31 / 59
35 Listas encadeadas / Remoção no fim def _remove_prox(self, p): ListaEncadeada, No -> Qualquer Remove o próximo a partir de p e devolve o valor armazenado no n v = p.prox.valor p.prox = p.prox.prox if p.prox == None: self._ultimo = p return v 32 / 59
36 Listas encadeadas / Consulta e alteração por posição Consulta e alteração por posição Iniciar uma referência p para o primeiro elemento Avançar p para o próximo até que chegue na posição especificada ou a lista acabe Se chegou na posição especificada, devolver ou alterar o valor do nó, caso contrário gerar um erro pois a posição está fora da lista Análise do tempo de execução No pior caso p avançara até acabar a lista, ou seja, vai passar por todos os nós Portanto, o tempo de execução é O(n) 33 / 59
37 Listas encadeadas / Consulta e alteração por posição Exemplo inicial >>> xs = ListaEncadeada() >>> xs.insere_fim(4); xs.insere_fim(2); xs.insere_fim(7) >>> xs.consulta(1) 2 >>> xs.consulta(2) 7 >>> xs.altera(1, 10) >>> xs._primeiro No(4, No(10, No(7, None))) Compare com o funcionamento da lista (pré-definida) do Python >>> xs = [4, 2, 7] >>> xs[1] 2 >>> xs[2] 7 >>> xs[1] = 10 >>> xs [4, 10, 7] 34 / 59
38 Listas encadeadas / Consulta e alteração por posição O que é mais conveniente xs[1] ou xs.consulta(1)? xs[1] = 10 ou xs.altera(1, 10)? A forma usada nas listas pré-definidas é mais conveniente Como fazer para tornar a consulta e alteração por posição em listas encadeada tão conveniente quanto das listas pré-definidas? Alterar o nome do método consulta para getitem Alterar o nome do método altera para setitem Estas alterações permite escrever xs[1] ao invés de xs.consulta(1) e xs[1] = 10 ao invés de xs.altera(1, 10) 35 / 59
39 Listas encadeadas / Consulta e alteração por posição Antes >>> xs = ListaEncadeada() >>> xs.insere_fim(4); xs.insere_fim(2); xs.insere_fim(7) >>> xs.consulta(1) 2 >>> xs.consulta(2) 7 >>> xs.altera(1, 10) >>> xs._primeiro No(4, No(10, No(7, None))) Depois >>> xs = ListaEncadeada() >>> xs.insere_fim(4); xs.insere_fim(2); xs.insere_fim(7) >>> xs[1] # equivalente a x. getitem (1) 2 >>> xs[2] 7 >>> xs[1] = 10 # equivalente a x. setitem (1, 10) >>> xs._primeiro No(4, No(10, No(7, None))) 36 / 59
40 Listas encadeadas / Consulta e alteração posição # Veja o código completo no arquivo listas.py def _consulta_pos(self, pos): ListaEncadeada, Natural -> Qualquer Devolve o No na posiç~ao pos. Lança uma exceç~ao se pos >= len(lista) ou pos < 0. p = self._primeiro i = pos while p!= None and i > 0: p = p.prox i = i - 1 if p!= None and i == 0: return p else: raise Exception( índice fora do intervalo ) 37 / 59
41 Listas encadeadas / Consulta e alteração posição # Veja o código completo no arquivo listas.py def getitem (self, pos): p = self._consulta_pos(pos) return p.valor def setitem (self, pos, v): p = self._consulta_pos(pos) p.valor = v 38 / 59
42 Listas encadeadas / Inserção em uma posição Insere em uma posição Se a posição for 0, inserir no início Senão, procurar o nó na posição anterior e insirir o novo valor após este nó Análise do tempo de execução Inserir no início é constante No no pior caso, todos os nós serão visitados se o índice estiver fora da faixa Portanto, o tempo de execução é O(n) 39 / 59
43 Listas encadeadas / Inserção em uma posição # Veja os exemplos no arquivo listas.py def insere(self, pos, v): ListaEncadeada, Natural, Qualquer -> None Insere v na posiç~ao pos. if pos == 0: self.insere_inicio(v) else: # procura o nó na posiç~ao anterior a inserç~ao p = self._consulta_pos(pos - 1) # insere após o nó encontrado self._insere_prox(p, v) 40 / 59
44 Listas encadeadas / Inserção em uma posição # Veja os exemplos no arquivo listas.py def _insere_prox(self, p, v): ListaEncadeada, No, Qualquer -> None Insere o v após o nó p. Exemplos: veja o método insere p.prox = No(v, p.prox) if p.prox.prox == None: self._ultimo = p.prox 41 / 59
45 Listas encadeadas / Remoção em uma posição Remoção em uma posição Se a posição for 0, remover do início Senão, procurar o nó na posição anterior e remover o próximo nó Análise do tempo de execução Remover no início é constante No pior caso, todos os nós serão visitados se o índice estiver fora da faixa Portanto, o tempo de execução é O(n) 42 / 59
46 Listas encadeadas / Remoção em uma posição def remove_pos(self, pos): ListaEncadeada, Natural -> Qualquer >>> xs = ListaEncadeada() >>> xs.insere_fim(5) >>> xs.insere_fim(2) >>> xs.insere_fim(4) >>> xs.insere_fim(8) >>> xs.remove_pos(2) 4 >>> xs.remove_pos(0) 5 >>> xs.remove_pos(1) 8 if pos == 0: return self.remove_inicio() p = self._consulta_pos(pos - 1) return self._remove_prox(p) 43 / 59
47 Listas encadeadas Veja no arquivo listas.py a definição de outras operações Verificar se um elemento está na lista Remover um elemento Contar a quantidade de nós Criar uma representação textual 44 / 59
48 Listas encadeadas Melhorias Manter também uma referência para o nó anterior Permite remover qualquer nó em O(1) (mais o tempo para encontrar o nó) Este tipo de lista é chamada de lista duplamente encadeada Criar um nó especial chamada sentinela que não faz parte da lista mas é o primeiro e último no encadeamento Permite de as operações de inserção e remoção sejam escritas de forma genérica, sem distinguir se a operação é no início ou fim da lista 45 / 59
49 Arranjos dinâmicos
50 Arranjos dinâmicos Os arranjos nas linguagens C e Pascal são estáticos. Eles não podem mudar de tamanho Os arranjos em Python são dinâmicos, eles podem mudar de tamanho Um arranjo dinâmico pode suportar as mesmas operações de uma lista, em outras palavras, um arranjo dinâmico pode implementar o tipo abstrato Lista Como implementar um arranjo dinâmico em termos de um arranjo estático? 47 / 59
51 Arranjos dinâmicos / Inserção Quando um elemento é inserido em uma posição i, todos os elementos x i+1, onde i + 1 < n, devem ser empurrados para a direita Se não houver espaço, um novo arranjo com tamanho maior deve ser criado Os valores do arranjo antigo são copiados para o novo arranjo O arranjo antigo é descartado 48 / 59
52 Arranjos dinâmicos / Remoção Quando um elemento é removido de uma posição i, todos os elementos x i+1, onde i + 1 < n, devem ser empurrados para a esquerda 49 / 59
53 Comparações
54 Comparações Lista Encadeada Arranjo dinâmico Consulta posição O(n) O(1) Inserir no início O(1) O(n) Inserir no fim O(1) O(1) Remover do O(1) O(n) início Remover do fim O(n) O(1) Inserir próximo Tempo de busca + O(1) O(n) 51 / 59
55 Filas
56 Filas Uma fila é como uma lista, mas as inserções e remoções deve seguir uma poĺıtica FIFO - First in, First out O primeiro a entrar é o primeiro a sair A operação de inserção também é conhecida como enfileira A operação de remoção também é conhecida como desenfileira 53 / 59
57 Filas Se existisse uma classe Fila, como gostaríamos que ela funcionasse? >>> f = Fila() >>> f.insere(3) >>> f.insere(5) >>> f.insere(8) >>> f.remove() 3 >>> f.insere(10) >>> f.insere(20) >>> f.remove() 5 >>> f.remove() 8 >>> f.remove() 10 >>> f.remove() 20 Veja o arquivo listas.py 54 / 59
58 Pilhas
59 Pilhas Uma pilha é como uma lista, mas as inserções e remoções deve seguir uma poĺıtica LIFO - Last in, First out O último a entrar é o primeiro a sair A operação de inserção também é conhecida como empilha A operação de remoção também é conhecida como desempilha 56 / 59
60 Pilhas Se existisse uma classe Pilha, como gostaríamos que ela funcionasse? >>> p = Pilha() >>> p.insere(3) >>> p.insere(5) >>> p.insere(8) >>> p.remove() 8 >>> p.insere(10) >>> p.insere(20) >>> p.remove() 20 >>> p.remove() 10 >>> p.remove() 5 >>> p.remove() 3 Veja o arquivo listas.py 57 / 59
61 Referências
62 Referências Projeto de algoritmos / Listas encadeadas. Paulo Feofiloff. Algoritmos: Teoria e prática. 3 a edição. Cormen, Thomas H at all. Capítulo 10. Algoritmos: Teoria e prática. 2 a edição. Cormen, Thomas H at all. Capítulo / 59
Pilhas Acesso. Pilha. Fila. Listas lineares especiais. Pilhas e Filas. Listas lineares especiais mais usuais. Disciplina restrita
Listas lineares especiais s Acesso consulta inserção remoção Disciplina restrita de acesso Disciplina restrita acesso permitido somente em alguns nós Listas lineares especiais mais usuais LIFO Last In
Listas Lineares. Livro Projeto de Algoritmos Nívio Ziviani Capítulo 3 Seção 3.1
Listas Lineares Elerson R. S. Santos [email protected] Livro Projeto de Algoritmos Nívio Ziviani Capítulo 3 Seção 3.1 http://www2.dcc.ufmg.br/livros/algoritmos/ Listas Lineares Uma das formas mais simples
Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo
PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo Árvore: estrutura composta por nós e arestas entre nós. As arestas são direcionadas ( setas ) e: um nó (e apenas um) é a raiz; todo nó
LISTAS LINEARES. Estrutura de Dados
LISTAS LINEARES Lista Linear Definição: seqüência de zero ou mais elementos a 1,a 2,...,a n sendo a i elementos de um mesmo tipo n o tamanho da lista linear Propriedade fundamental: os elementos têm relações
Pilhas e Filas. Nádia Félix e Hebert Coelho
Pilhas e Filas Nádia Félix e Hebert Coelho Vários slides foram adaptados de Nina Edelwais e Renata Galante Estrutura de Dados Série de Livros Didáticos - Informática - UFRGS Pilhas e filas Listas lineares
Pilhas. ser acessada somente por uma de suas extremidades. pelo topo. S Uma pilha é uma estrutura linear de dados que pode
Pilhas e Filas Pilhas Uma pilha é uma estrutura linear de dados que pode ser acessada somente por uma de suas extremidades. Uma pilha é uma lista LIFO (do inglês last-in-first out) o último a entrar é
1. Listas sequenciais versus listas ligadas. Lista sequencial
Alocação Dinâmica Listas Ligadas 1. Listas sequenciais versus listas ligadas Lista sequencial Uma lista sequencial é um conjunto de elementos contíguos na memória. Um vetor é o melhor exemplo de lista
# Estrutura de Dados # Aula 06 Pilhas Estáticas. Prof. Leinylson Fontinele Pereira
# Estrutura de Dados # Aula 06 Pilhas Estáticas Prof. Leinylson Fontinele Pereira Na aula anterior... Filas Estáticas Sequencial # Propriedades # Operações fundamentais Introdução 3 O que vamos aprender?
UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas
UNIP - Ciência da Computação e Sistemas de Informação Estrutura de Dados AULA Pilhas Estrutura de Dados A Estrutura de Dados Pilha Pilha é uma estrutura de dados usada em programação, que tem uma regra
Estruturas de Dados Pilhas, Filas, Listas
Estruturas de Dados Pilhas, Filas, Listas Fabio Gagliardi Cozman Thiago Martins PMR3201 Escola Politécnica da Universidade de São Paulo Estruturas de Dados Pilhas, Filas, Listas Introdução Estruturas de
REVISÃO DE PILHAS E FILAS. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos
REVISÃO DE PILHAS E FILAS Vanessa Braganholo Estruturas de Dados e Seus Algoritmos PILHAS E FILAS São tipos especiais de listas com disciplina restrita de acesso Acesso Consulta Inserção Remoção Disciplina
Estruturas de Dados Encadeadas
CURSO: Ciência da Computação DATA: / / 2016 PERÍODO: 4 o. PROFESSOR: Andrey DISCIPLINA: Técnicas Alternativas de Programação AULA: 14 APRESENTAÇÃO Na aula de hoje vamos apresentar e discutir conceitos
S U M Á R I O. Definição de Estrutura de Dados. Vetores. Listas Ligadas. Pilhas. Filas
ESTRUTURA DE DADOS DEBORAH FERREIRA S U M Á R I O Definição de Estrutura de Dados 1 Vetores 2 Listas Ligadas 4 Pilhas 6 Filas 8 D E F I N I Ç Ã O D E E S T R U T U R A D E D A D O S Estruturas de dados
Algoritmos e estrutura de dados
Algoritmos e estrutura de dados Introdução Marco A L Barbosa cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual 4.0 Internacional. Conteúdo A linguagem Python
Estrutura de Dados. Diego Silveira Costa Nascimento
Estrutura de Dados Diego Silveira Costa Nascimento Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte [email protected] 31 de agosto de 2017 Ementa do Curso 1 Introdução
Aula de hoje. Listas. Sequências especiais. Introdução. Listas. Sequências. SCC Introdução à Programação para Engenharias
SCC 12 - Introdução à Programação para Engenharias Aula de hoje Introdução Sequências Classes e objetos Listas Listas Operações em listas Pilhas e filas Professor: André C. P. L. F. de Carvalho, ICMC-USP
Aula 07: Algoritmos de busca e Listas encadeadas
BC1424 Algoritmos e Estruturas de Dados I Aula 07: Algoritmos de busca e Listas encadeadas Prof. Jesús P. Mena-Chalco [email protected] 1Q-2016 1 Busca de um elemento 2 Exemplo: Busca de um elemento
Implementando subprogramas
Implementando subprogramas Linguagens de Programação Marco A L Barbosa cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual 4.0 Internacional. http://github.com/malbarbo/na-lp-copl
Fila e Deque. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof.
Fila e Deque SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic [email protected] Instituto de Ciências
Listas Estáticas. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof.
Listas Estáticas SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic [email protected] Instituto de
Estrutura de dados - Listas Encadeadas
Estrutura de dados - Listas Encadeadas Prof. Leonardo Cabral da Rocha Soares [email protected] Centro Universitário Newton Paiva 25 de abril de 2019 Estrutura de dados - Listas Encadeadas
Listas Lineares. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR
Listas Lineares David Menotti DInf UFPR Listas Lineares Uma das formas mais simples de interligar os elementos de um conjunto. Estrutura em que as operações inserir, retirar e localizar são definidas.
Estruturas de Dados Aula 11: TAD Pilha
Estruturas de Dados Aula 11: TAD Pilha Fontes Bibliográficas Livros: Projeto de Algoritmos (Nivio Ziviani): Capítulo 3; Introdução a Estruturas de Dados (Celes, Cerqueira e Rangel): Capítulo 10; Estruturas
Heaps. Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 / 35
Heaps Estrutura de Dados Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 / 35 Conteúdo Introdução Definição de Heap Heap Binária Implementação com vetor Fila de Prioridades
ESTRUTURA DE DADOS FILAS SEQUENCIAIS
ESTRUTURA DE DADOS FILAS SEQUENCIAIS Prof. Dr. Daniel Caetano 2012-2 Objetivos Compreender o que é uma estrutura em fila Compreender sua aplicação Capacitar para implementar filas Atividade Estruturada!
Árvores Binárias de Busca (ABB) 18/11
Árvores Binárias de Busca (ABB) 18/11 Definição Uma Árvore Binária de Busca possui as mesmas propriedades de uma AB, acrescida da seguintes propriedade: Para todo nó da árvore, se seu valor é X, então:
BCC202 - Estrutura de Dados I
BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) ASN Universidade Federal de Ouro Preto, UFOP Departamento de Computação, DECOM Material elaborado com base nos slides do Prof. Reinaldo Fortes (curso
Lista Encadeada (Linked List)
Lista Encadeada (Linked List) As listas ou listas encadeadas são a estrutura de dados mais simples concebível excetuando-se naturalmente os arrays. Listas encadeadas nada mais são que uma seqüência de
Implementação de subprogramas
Implementação de subprogramas Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual
Filas. Prof. Túlio Toffolo BCC202 Aula 12 Algoritmos e Estruturas de Dados I
Filas Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Aula 12 Algoritmos e Estruturas de Dados I O que é uma fila? 1 4 2 3 Fila 1 2 3 4 TAD Fila Tipo Abstrato de dados com a seguinte característica:
Revisão de TDA, Pilhas e Filas
Revisão de TDA, Pilhas e Filas Professor: Santiago Viertel [email protected] Sumário Tipos de Dados Abstratos Pilhas Conceito Pilha Estática Filas Conceito Filas Estáticas (FEMR, FEMI e FEC) Tipos
Listas Lineares Ordenadas
Listas Lineares Ordenadas Algoritmos e Estruturas de Dados I Nesta apresentação será apresentado o ADT lista linear ordenada Uma lista linear ordenada, ou simplesmente lista ordenada há uma ordem entre
Árvores Binárias de Busca
0. Um breve comentário sobre os algoritmos de busca em tabelas De uma maneira geral, realizam-se operações de busca, inserção e remoção de elementos numa tabela. A busca sequencial tradicional é O(N).
Programação II. Listas Encadeadas (Linked Lists) Bruno Feijó Dept. de Informática, PUC-Rio
Programação II Listas Encadeadas (Linked Lists) Bruno Feijó Dept. de Informática, PUC-Rio Vetores vs Estruturas Dinâmicas Vetores (arrays): Ocupa um espaço contíguo de memória Permite acesso randômico
Estrutura de Dados. Estrutura de Dados Recursividade. Exemplo: 5! = 5 x 4! 4! = 4 x 3! 3! = 3 X 2! 2! = 2 x 1! 1! = 1 x 0!
Rafael D. Ribeiro, M.Sc. [email protected] http://www.rafaeldiasribeiro.com.br Exemplo: 5! = 5 x 4! 4! = 4 x 3! 3! = 3 X 2! 2! = 2 x 1! 1! = 1 x 0! Fatorial de 0 = 1 Recursividade 1 Recursividade
Estrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB
Estrutura de Dados Carlos Eduardo Batista Centro de Informática - UFPB [email protected] Listas e Filas Estruturas de Dados 2 Estrututuras de dados lineares Pilhas (stack) Estrutura de dados onde a inserção
Pilhas e Filas. Livro Projeto de Algoritmos Nívio Ziviani Capítulo 3 Seção 3.2 e 3.3
Pilhas e Filas Livro Projeto de Algoritmos Nívio Ziviani Capítulo 3 Seção 3.2 e 3.3 http://www2.dcc.ufmg.br/livros/algoritmos/ PILHAS Pilha É uma lista linear em que todas as inserções, retiradas e, geralmente,
Listas Lineares. continuando...
Listas Lineares continuando... 1 Listas! relembrando: listas lineares agrupa informações referentes aum conjunto de elementos que, de alguma forma, se relacionam entre si! Uma lista linear ou está vazia,
Árvores Binárias de Busca (ABB) 18/11
Árvores Binárias de Busca (ABB) 18/11 Definição Uma Árvore Binária de Busca possui as mesmas propriedades de uma AB, acrescida da seguintes propriedade: Para todo nó da árvore, se seu valor é X, então:
Fundamentos da Programação
Fundamentos da Programação Segundo Teste 10 de Janeiro de 2014 09:00 10:30 Nome: Número: Esta prova, individual e sem consulta, tem 8 páginas com 12 perguntas. A cotação de cada pergunta está assinalada
ESTRUTURA DE DADOS (TCC )
ESTRUTURA DE DADOS (TCC-00.319) Listas lineares Pilhas e Filas Cristina Boeres 2 Manipulando listas lineares! Dependendo do problema a ser resolvidos, existem duas formas especiais (que veremos aqui no
ESTRUTURAS DE DADOS E ALGORITMOS II ANTONIO RAMOS DE CARVALHO JÚNIOR PILHAS
ESTRUTURAS DE DADOS E ALGORITMOS II ANTONIO RAMOS DE CARVALHO JÚNIOR PILHAS TEORIA CONJUNTO ORDENADO DE ITENS NO QUAL NOVOS ITENS PODEM SER INSERIDOS E A PARTIR DO QUAL PODEM SER ELIMINADOS ITENS EM UMA
Módulo: PYTHON. Felipe Oliveira
Módulo: PYTHON Felipe Oliveira Tudo Blzinha? https://pip.pypa.io/en/stable/installing/ Ctrl + S Variáveis Palavras reservadas! Operadores Aritméticos Operadores básicos Operação Operador adição +
CES-11. Pilhas Definição Operações Filas. Operações Deques. Definição. Operações
CES-11 Pilhas Definição Operações Filas Definição Operações Deques Definição Operações PILHAS, FILAS E DEQUES As listas lineares admitem inserção e eliminação em qualquer posição. Pilhas, filas e deques
Aplicações de listas e outras estruturas. SCC-502 Algoritmos e Estruturas de Dados I
Aplicações de listas e outras estruturas SCC-52 Algoritmos e Estruturas de Dados I Grandes números Problema: lidar com números muito grandes Em C, inteiros (mesmo long int) são limitados Como somar números
Estrutura de Dados Listas
Universidade Federal da Paraíba Centro de Informática Departamento de Informática Estrutura de Dados Listas 1 Tiago Maritan [email protected] Conteúdos Abordados O Conceito de Listas Listas com Representação
FICHA 8 PILHAS E FILAS
ESTRUTURAS DE DADOS E ALGORITMOS Departamento de Engenharia Eletrotécnica e de Computadores Faculdade de Ciências e Tecnologia da Universidade de Coimbra FICHA 8 PILHAS E FILAS 8.1. Objetivos Objetivos
Algoritmos e Estrutura de Dados II. Árvore. Prof a Karina Oliveira.
Algoritmos e Estrutura de Dados II Árvore Prof a Karina Oliveira [email protected] Introdução Estruturas de dados lineares (pilha, fila) são estruturas que guardam coleções de elementos que são acessados
Aula 7 e 8 Filas e suas Aplicações. Prof. Leticia Winkler
Aula 7 e 8 Filas e suas Aplicações Prof. Leticia Winkler 1 Definição de Fila (Queue) São estruturas de dados do tipo FIFO (first-in first-out) - o primeiro elemento a ser inserido, será o primeiro a ser
ÁRVORES E ÁRVORE BINÁRIA DE BUSCA
ÁRVORES E ÁRVORE BINÁRIA DE BUSCA Prof. André Backes Definição 2 Diversas aplicações necessitam que se represente um conjunto de objetos e as suas relações hierárquicas Uma árvore é uma abstração matemática
Estruturas de Dados I
Estruturas de Dados I Rodrigo Porfírio da Silva Sacchi [email protected] 3410-2075 Aula 6: Listas Encadeadas e Alocação Dinâmica Listas Encadeadas e Alocação Dinâmica Alocação Seqüencial versus
Conceitos. Pilhas e Filas. Conceitos e Implementação em linguagem C. Maria Adriana Vidigal de Lima. Março
Conceitos e Implementação em linguagem C Março - 2009 1 Conceitos 2 Organização dos dados Em determinadas aplicações, as pilhas e filas representam estruturas de dados importantes, nas quais seus elementos
Prova 2 PMR3201 1o. semestre 2015 Prof. Thiago Martins
Prova PMR0 o semestre 0 Prof Thiago Martins Instruções: Escreva o nome e o número USP na folha de papel almaço ( pontos) Uma árvore binária de busca é uma árvore binária na qual para qualquer sub-árvore
SCC Algoritmos e Estruturas de Dados I
SCC 202 - Algoritmos e Estruturas de Dados I TAD Pilha Lembrem...TADs são tipos definidos em termos de seu comportamento e não de sua representação (que pode variar na busca de eficiência) 12/8/2010 Pilha
Filas. Nesta aula veremos o ADT fila Em um computador existem muitas filas esperando pela impressora, acesso ao disco ou, num sistema timesharing,
Filas Nesta aula veremos o ADT fila Em um computador existem muitas filas esperando pela impressora, acesso ao disco ou, num sistema timesharing, pelo uso da CPU Algoritmos e Estruturas de Dados I José
Estruturas de Dados Estruturas de Dados Fundamentais
Estruturas de Dados Estruturas de Dados Fundamentais Prof. Eduardo Alchieri Estruturas de Dados Fundamentais Todos os tipos abstratos de dados (pilhas, filas, deques, etc.) podem ser implementados usando
Fundamentos da Programação
Fundamentos da Programação Solução do Segundo Teste 18 de Janeiro de 2013 09:00 10:30 1. (2.0) Escolha a única resposta incorrecta para as seguintes questões. Cada resposta certa vale 1 valor e cada resposta
Árvores binárias de busca
Árvores binárias de busca Introdução à Ciência de Computação II Diego R. Amancio Baseado no material do Prof. Thiago A. S. Pardo Árvore binárias n Árvores de grau 2, isto é, cada nó tem dois filhos, no
Estruturas de Dados Filas
Estruturas de Dados Filas Roteiro Introdução Definição de Fila (Queue) Aplicações Operações sobre Fila Implementação de Fila Com vetores Com listas encadeadas Exercícios Introdução Estamos acostumados
Nomes, vinculações e escopos
Nomes, vinculações e escopos Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual
Estruturas Compostas Parte II
Estruturas Compostas Parte II Filas e Pilhas Leonardo Tórtoro Pereira Slides fortemente baseados no material do professor Ricardo Farias: http://www.cos.ufrj.br/~rfarias/cos121/ Pilhas Pilhas Também conhecida
ESTRUTURAS DE DADOS E ALGORITMOS LISTA LIGADA
ESTRUTURAS DE DADOS E ALGORITMOS 1 LISTA LIGADA Adalberto Cajueiro Departamento de Sistemas e Computação Universidade Federal de Campina Grande LISTA LIGADA (LINKED LIST) É uma estrutura de dados em que
Dicionários. TAD Orientado a conteúdo
Dicionários TAD Orientado a conteúdo Dicionários efinição: Tipo abstrato de dados orientado a onteúdo. Contrasta com as PILHAs e FILAs que são orientadas a posição. perações implementadas: Inserir(d,x)
Edital de Seleção 024/2017 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões
Edital de Seleção 024/2017 PROPESP/UFAM Prova de Conhecimento Caderno de Questões CANDIDATO: «Nome» INSCRIÇÃO: «Inscrição» Assinatura conforme identidade INSTRUÇÕES PARA O CANDIDATO: Verifique o seu nome
Filas. Prof. Rui Jorge Tramontin Jr. UDESC - Rui J. Tramontin Jr. 1
Filas Prof. Rui Jorge Tramontin Jr. UDESC - Rui J. Tramontin Jr. 1 Índice Introdução Aplicações Implementação / Modelagem Operações de uma fila TAD da Fila em C UDESC - Rui J. Tramontin Jr. 2 Introdução
LISTAS ENCADEADAS OU NÃO- SEQÜENCIAIS. Estrutura de Dados
LISTAS ENCADEADAS OU NÃO- SEQÜENCIAIS Listas Lineares Como visto anteriormente, as operações básicas para o nosso TAD Lista Linear são: FLVazia Vazia Retira Insere Imprime A implementação através de arrays
Edital de Seleção 023/2018 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões
Edital de Seleção 023/2018 PROPESP/UFAM Prova de Conhecimento Caderno de Questões CANDIDATO: INSCRIÇÃO: Assinatura conforme identidade INSTRUÇÕES PARA O CANDIDATO: Verifique o seu nome e o número da sua
Tabelas Hash O Que é uma Tabela Hash? O Que é uma Tabela Hash? O Que é uma Tabela Hash? Inserindo um Novo Registro. O Que é uma Tabela Hash?
Tabelas Hash O Que é uma Tabela Hash? Nesta aula são discutidos modos de armazenar informações em um vetor, e depois procurar por uma informação Tabelas Hash constituem uma abordagem comum para o problema
