Estruturas de Dados Encadeadas

Documentos relacionados
UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas

FILAS. As coisas de que uma fila é feita serão chamadas itens. Os itens podem ser números, strings, structs, etc., etc.

Aula 7 e 8 Filas e suas Aplicações. Prof. Leticia Winkler

S U M Á R I O. Definição de Estrutura de Dados. Vetores. Listas Ligadas. Pilhas. Filas

Algoritmos e Estruturas de Dados II IEC013. TAD, Pilhas e Filas. Prof. César Melo

Estruturas de Dados Filas

Estruturas Compostas Parte II

Pilhas e Filas Encadeadas. Algoritmos e Estruturas de Dados I

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

Pilhas e Filas. Nádia Félix e Hebert Coelho

Pilhas. ser acessada somente por uma de suas extremidades. pelo topo. S Uma pilha é uma estrutura linear de dados que pode

CES-11. Pilhas Definição Operações Filas. Operações Deques. Definição. Operações

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

Pilhas e Filas. Algoritmos e Estruturas de Dados Flavio Figueiredo (

FICHA 8 PILHAS E FILAS

Prova 2 PMR3201 1o. semestre 2015 Prof. Thiago Martins

Estrutura de Dados Listas

Estrutura de dados - Listas Encadeadas

Fila e Deque. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof.

ESTRUTURAS DE DADOS E ALGORITMOS II ANTONIO RAMOS DE CARVALHO JÚNIOR PILHAS

Algoritmos e Estruturas de Dados II IEC013

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

Orientação a Objetos AULA 09

Aula 11 Pilha Dinâmica. prof Leticia Winkler

Filas. Nesta aula veremos o ADT fila Em um computador existem muitas filas esperando pela impressora, acesso ao disco ou, num sistema timesharing,

Estruturas de Dados Aula 11: TAD Pilha

Revisão de TDA, Pilhas e Filas

Paradigmas de Programação

Estruturas de Dados Pilhas, Filas, Listas

Estrutura de Dados. Diego Silveira Costa Nascimento

# Estrutura de Dados # Aula 06 Pilhas Estáticas. Prof. Leinylson Fontinele Pereira

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

Árvores. Estruturas de Dados. Prof. Vilson Heck Junior

LISTAS LINEARES. Estrutura de Dados

ESTRUTURAS DE DADOS E ALGORITMOS LISTA LIGADA

Pilhas. Algoritmos e Estruturas de Dados I. José Augusto Baranauskas Departamento de Física e Matemática FFCLRP-USP

Filas Implementação Sequencial

Algoritmos e estrutura de dados

Tema 7. Colecções AULA TEÓRICA 6. Listas: ArrayList, LinkedList, Vector Ø Criação Ø Manipulação

Aula 5 e 6 Pilhas e suas Aplicações. prof Leticia Winkler

A regra de acesso aos dados de uma fila é a seguinte: O primeiro elemento que entra (na fila) é o primeiro que sai (FIFO first in, first out).

SCC Algoritmos e Estruturas de Dados I

1. Listas sequenciais versus listas ligadas. Lista sequencial

Filas Exemplo de Aplicação

4. Listas, Pilhas, e Filas

4. Listas, Pilhas, e Filas

Prova 2 PMR3201 1o. semestre 2016 Prof. Thiago Martins

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

Programação Orientada a Objetos (utilizando C#) Professor Emiliano S. Monteiro Versão 20 Jan/2017.

ESTRUTURAS DE DADOS E ALGORITMOS LISTA LIGADA (ABORDAGEM RECURSIVA)

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

Estruturas de Dados Pilhas, Filas, Listas

Estruturas de Dados em C++ Conceitos. Leandro Tonietto jun-09

Pilhas. Prof. Túlio Toffolo BCC202 Aula 11 Algoritmos e Estruturas de Dados I

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

Aula 14 Listas Duplamente Encadeadas. prof Leticia Winkler

Pilhas Filas e Listas

Listas Lineares Ordenadas

ESTRUTURA DE DADOS (TCC )

Transcrição:

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 relacionados com Estruturas de Dados Encadeadas em java. DESENVOLVIMENTO Estruturas de Dados Encadeadas As estruturas de dados encadeadas são coleções de dados que possuem algumas características especiais. Tal como nos arrays, os dados são colocados em uma sequência. Ao contrário dos arrays, as estruturas encadeadas podem aumentar ou diminuir de tamanho de acordo com a necessidade. Estas estruturas são muito usadas em casos onde não é possível saber de antemão, a quantidade dos dados que serão tratados. As estruturas de dados encadeadas são divididas em três categorias: Pilhas Filas Listas A diferença entre estas categorias está nas restrições para inserção e remoção dos elementos em cada uma das estruturas. Pilhas - LIFO - o ultimo que entra é o primeiro que sai Filas - FIFO - o primeiro que entra é o primeiro que sai Listas - sem restrições de acesso Estas estruturas são baseadas em classes auto referenciáveis. Nestas classes um objeto possui uma referência para um outro objeto desta classe. Como por exemplo, na classe Nodo descrita abaixo. public class Nodo String elemento; Nodo proximo = null; public Nodo() Pilhas Como já vimos, as Pilhas são estruturas de dados encadeadas, com tamanho variável com restrição de acesso LIFO (Last In - First Out). Isto significa que só podemos inserir ou retirar um elemento do topo da Pilha. Para criar uma Pilha, ela começa sem nenhum elemento. 1

Pilha public class Pilha public Pilha() Nodo topo = null; String nome= "lista"; Para inserir um elemento usaremos a operação POP. O elemento será inserido e removido no topo da Pilha como ilustrado na figura abaixo. Para inserir um elemento na pilha é usada a operação PUSH. Esta operação cria um novo Nodo e atualiza a referência do topo da pilha. public void push(string elemento) no.elemento = elemento; no.proximo = this.topo; this.topo = no; Para remover um elemento do topo da pilha é usada a operação POP, onde a referência do topo da pilha é atualizada para o próximo elemento e o primeiro elemento é removido public void pop() Nodo aux = this.topo; this.topo = aux.proximo; aux = null; 2

UNIVERSIDADE FEDERAL DO PARANÁ Além disso temos outras operações para a pilha: top - retorna o elemento que está no topo sem removê-lo size - retorna o número de elementos que existem na pilha empty - retorna true se a pilha estiver vazia ou false caso contrário imprimepilha - imprime todos os elementos que estão na pilha. A pilha é uma estrutura de dados muito usada em compiladores e interpretadores, onde algumas ações ficam pendentes para serem resolvidas mais tarde. Filas Como já vimos, as Filas são estruturas de dados encadeadas, com tamanho variável com restrição de acesso FIFO (First In - First Out). Isto significa que só podemos inserir um elemento no final da fila e retirar um elemento do inicio da Fila. Para criar uma Fila, ela começa sem nenhum elemento. public class Fila Nodo inicio = null; Nodo fim; int tamanho = 0; String nome= "fila"; Inserindo e removendo elementos da Fila: Para inserir um elemento usaremos a operação ENQUEUE. Esta operação cira um novo Nodo que será inserido no final da Fila, como ilustrado na figura abaixo. public static void enqueue(string elemento) 3

no.elemento = elemento; if (this.inicio == null) this.inicio = no; this.fim = no; else this.fim.proximo = no; this.fim = this.fim.proximo; this.tamanho++; UNIVERSIDADE FEDERAL DO PARANÁ Para remover um elemento da Fila iremos usar a operação DEQUEUE. O elemento será removido do inicio da Fila. public void dequeue() if(this.inicio!= null) Nodo aux = this.inicio; this.inicio = aux.proximo; aux = null; if((this.inicio == null)&&(this.fim!=null)) this.fim = null; this.tamanho --; Além disso temos outras operações para a Fila: size - retorna o número de elementos que existem na Fila empty - retorna true se a Fila estiver vazia ou false caso contrário imprimefila - imprime todos os elementos que estão na Fila. A Fila é uma estrutura de dados muito usada para representar filas de processos no mundo Real, filas de impressão, buffers, além de organizar a prioridade de processos em um sistema operacional. Listas As Listas são estruturas de dados encadeadas, sem restrição de acesso. Neste caso um elemento pode ser inserido ou removido da Lista em qualquer posição. Para criar uma lista vazia: public class Lista Nodo comeco = null; String nome= "lista"; 4

Para inserir um elemento na Lista usamos a operação INSERE. public void insert(string elemento, int pos) no.elemento = elemento; if(pos>1) Nodo aux = this.comeco; int i = 1; while ((i < pos-1) && (aux.proximo!= null)) aux = aux.proximo; i++; no.proximo = aux.proximo; aux.proximo = no; else no.proximo = this.comeco; this.comeco = no; Para remover um elemento da Lista, usamos a operação REMOVE. public void remove(int pos) Nodo aux = this.comeco; int i = 1; while ((i < pos -1) && (aux.proximo!= null)) aux = aux.proximo; i++; no = aux.proximo; aux.proximo = aux.proximo.proximo; no = null; As outras operações de uma Lista são: elementat() - retorna o elemento que está na posição pos. imprimelista() - Imprime todos os elementos de uma Lista empty() - retorna true se a lista estiver vazia size() - retorna o número de elementos da Lista As listas também podem ser duplamente encadeadas, o que permite a movimentação nos dois sentidos da lista. 5

Uso de Listas As Listas são muito usadas para manipular conjuntos de dados com tamanho variável como um conjunto de objetos trazidos do banco de dados ou um carrinho de compras. Em Java existem Listas implementadas que podem ser usadas. Elas estão implementadas nas classes: ArrayList LinkedList PriorityQueue (Fila) Stack (Pilha) Vector ATIVIDADE 1) Implemente em Java a classe Pilha e a classe Nodo com todas as operações listadas nesta unidade. 2) Use a classe Pilha acima como base para escrever um algoritmo que leia um nome até que um espaço em branco apareça e o escreva invertido. 3) Escreva um programa que leia uma sequência de letras e diga quantas vezes apareceu a sequência ab. 4) Quais são as operações de uma pilha? 5) Quais são os principais usos de uma Pilha? 6) O que faz a operação push()? 1) Implemente em Java a classe Lista e a classe Nodo com todas as operações listadas nesta unidade. 2) Implemente em Java a classe Fila e a classe Nodo com todas as operações listadas nesta unidade. 3) Quais são as operações de uma Fila? 4) Quais são os principais usos de uma Lista? 5) O que faz a operação enqueue()? BIBLIOGRAFIA BÁSICA DEITEL, H. M. e DEITEL, P. J.. Java, como Programar. Ed. Bookman. Porto Alegre. 2001. AHO, A.V.; HOPCROFT, J.E.; ULLMAN, J.D. Data Structures and Algorithms. Addison-Wesley, Reading, Massachusetts, 1983. 6