Tipos de Dado Abstrato: Listas, Filas e Pilhas



Documentos relacionados
PROGRAMAÇÃO II 3. FILA DINÂMICA

Filas: conceitos e implementações

Coleções. Conceitos e Utilização Básica. c Professores de ALPRO I 05/2012. Faculdade de Informática PUCRS

Algoritmos e Estrutura de Dados. Prof. Tiago A. E. Ferreira

Figura 1: tela inicial do BlueControl COMO COLOCAR A SALA DE INFORMÁTICA EM FUNCIONAMENTO?

Lógica de Programação

Manual do Instar Mail v2.0

EAD Fila. - algumas operações realizam-se na frente/cabeça e outras na cauda da Fila

Exercícios de Revisão Java Básico

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação

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

Projeto de sistemas em Java. Algoritmos e Programação I. Classe SimulacaoFuncionario. Classe SimulacaoFuncionario. Classe SimulacaoFuncionario

Manual das planilhas de Obras v2.5

REGISTRO DE PROJETOS

Trabalho 3: Agenda de Tarefas

Primeiros passos das Planilhas de Obra v2.6

Manual do Módulo de PC Online

Estrutura de Dados Pilha (Stack)

1. REGISTRO DE PROJETOS

Vetores. Professor Dr Francisco Isidro Massettto

PORTAL WISSEN OPERADORA 2011 GUIA PRÁTICO OPERACIONAL. Portal Wissen

Estruturas de Dados com Jogos. Capítulo 3 Filas - Alocação Sequencial e Estática

PROCEDIMENTOS PARA ORGANIZAÇÃO E ENTREGA DE DOCUMENTOS NOVOS

3.1 Definições Uma classe é a descrição de um tipo de objeto.

O que é um algoritmo? O que é um programa? Algoritmos. Programas. Aula 1 Tipo Abstrato de Dados

7 - Análise de redes Pesquisa Operacional CAPÍTULO 7 ANÁLISE DE REDES. 4 c. Figura Exemplo de um grafo linear.

Fila de Prioridade. Siang Wun Song - Universidade de São Paulo - IME/USP. MAC Estruturas de Dados

Complexidade de Algoritmos

Coleções. Page 1. Coleções. Prof. Anderson Augustinho Uniandrade

CES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches Juliana de Melo Bezerra

Prestador de Serviços

Sistema Integrado de Atendimento

Bem-vindo ao curso delta Gerenciamento de peso para a versão 9.1. Este curso aborda a nova solução de peso introduzida nessa versão.

Manual sistema Laundry 4.0

O Sistema foi inteiramente desenvolvido em PHP+Javascript com banco de dados em MySQL.

Programação Orientada a Objetos e Java - Introdução. Carlos Lopes

Estruturas de Dados Pilhas, Filas e Deques

Manual de Utilização do PDV Klavix

Estrutura de Dados Básica

Ter o controle das pastas (Prontuários) armazenadas no "SAME", utilizando-se do recurso do "Volume".

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 6 Filas

Guia para utilização do ambiente de EaD UniRitter

G-Bar. Módulo Básico Versão 4.0

Bom trabalho. Módulo Contabilidade Caixa e Contas Bancárias

Aula de JavaScript 05/03/10

Tutorial WEB Soluço es Click.

Usando o do-file editor Automatizando o Stata

Implementando uma Classe e Criando Objetos a partir dela

DAS5102 Fundamentos da Estrutura da Informação

Introdução ao icare 2

Seu manual do usuário LOGMEIN RESCUE

PROCEDIMENTO DO CLIENTE

Sistemas Operacionais Arquivos. Carlos Ferraz Jorge Cavalcanti Fonsêca

Aleph. Entre Bibliotecas. Reunião da REJE 09 de novembro de 2011

FACULDADE CAMPO LIMPO PAULISTA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO. Projeto e Análise de Algoritmos II Lista de Exercícios 2

Manual do FACGTO - Autorizador Online Odontologia

MANUAL DA SECRETARIA

Nome do Processo: Recebimento de produtos em consignação

CALEDÁRIO ESCOLAR. Página 1 de 24

DIRETO. Manual do Usuário. PROCERGS Divisão 7

Resolução de Problemas de Rede. Disciplina: Suporte Remoto Prof. Etelvira Leite

Manual de Procedimentos. Acesso pelo Produtor -AGRODEFESA- GTI-

IFTO LÓGICA DE PROGRAMAÇÃO AULA 05

MANUAL DO OFICIAL DE JUSTIÇA

Algoritmos e Programação Parte Teórica

Manual Sistema Curumim. Índice

MANUAL PARA USO DO SISTEMA

EATON Fácil V1.00 Guia de utilização

Manual de Utilização

ArpPrintServer. Sistema de Gerenciamento de Impressão By Netsource Rev: 02

Padrão ix. Q-Ware Cloud File Publisher Manual para realização do Donwload de Arquivos. Versão

BSI UFRPE Prof. Gustavo Callou

Manual do usuário Sistema de Ordem de Serviço HMV/OS 5.0

Acesso Escola. Primeiro Acesso

O Windows também é um programa de computador, mas ele faz parte de um grupo de programas especiais: os Sistemas Operacionais.

Início Rápido para o Templo

Guia de Procedimentos

UFSC-CTC-INE INE Estruturas de Dados. Filas. Prof. Ronaldo S. Mello 2002/2. Fila

Especificação do Trabalho

Capítulo 13 Pastas e Arquivos

Curso destinado à preparação para Concursos Públicos e Aprimoramento Profissional via INTERNET INFORMÁTICA AULA 11

Filas. Fabrício J. Barth. BandTec - Faculdade de Tecnologia Bandeirantes

MANUAL DE UTILIZAÇÃO DO SISTEMA HERMES

Manual de uso do Borderô Credix

Recuperação de Chave Secundária e Multilista

SISTEMA BRENA DE AUTOMAÇÃO COMERCIAL

Para o OpenOffice Impress, assim como para vários softwares de apresentação, uma apresentação é um conjunto de slides.

Módulo: M_SOLICITACAO_OS - Cadastro da Ordem de Serviço

DAS5102 Fundamentos da Estrutura da Informação

Sistemas de Arquivos. André Luiz da Costa Carvalho

DAS5102 Fundamentos da Estrutura da Informação

ILP - Introdução à Linguagem de Programação. Plano de estudo: - Constantes e variáveis. - Atribuindo valores às variáveis.

PASSO A PASSO PARA PETICIONAMENTO ELETRÔNICO INICIAL DE 1º GRAU

Transcrição:

Tipos de Dado Abstrato: Listas, Filas e Pilhas Estruturas de Dados Prof. Vilson Heck Junior

Introdução Tradicionalmente conhecidos como Tipos de Dado Abstrato, são algumas Estruturas de Dados básicas e importantes para a construção de algoritmos mais bem elaborados; Nas próximas aulas, aprenderemos o que são listas, filas e pilhas, bem como aprenderemos utilizá-las para resolver alguns problemas computacionais.

Listas, Filas e Pilhas LISTAS - INTRODUÇÃO

Listas Listas são conjuntos de elementos, objetos, variáveis, tarefas, ou qualquer coisa que se possa enumerar e formar um conjunto; As listas estão presentes em nossa vida, desde o nosso nascimento, por exemplo, com a lista de compras que nossos pais tiveram que fazer para nós.

Listas Exemplo de Lista de Compras: 5Kg de farinha; 2Kg de açucar; 500g de carne moída; 2Kg de arroz; 4L de leite; 1Kg de feijão; Etc..

Listas Exemplo de Lista Telefônica: Asdf de Zxcv: (44) 4444-4444 Beutrano Cruz: (33) 3333-3333 Ciclano da Silva: (22) 2222-2222 Fulano de Tal: (11) 1111-1111

Listas, Filas e Pilhas COMPORTAMENTO DE UMA LISTA

Comportamento de uma Lista Lista: Vazia!

Comportamento de uma Lista Lista: Inserir C C

Comportamento de uma Lista Lista: C

Comportamento de uma Lista Lista: Inserir D D C

Comportamento de uma Lista Lista: C D

Comportamento de uma Lista Lista: Inserir B B C D

Comportamento de uma Lista Lista: B C D

Comportamento de uma Lista Lista: Inserir F B C D F

Comportamento de uma Lista Lista: B C D F

Comportamento de uma Lista Lista: Inserir E B C E D F

Comportamento de uma Lista Lista: B C D E F

Comportamento de uma Lista Lista: B C D E F

Comportamento de uma Lista Lista: Remover B B C D E F

Comportamento de uma Lista Lista: Remover B B C D E F

Comportamento de uma Lista Lista: C D E F

Comportamento de uma Lista Lista: Remover F C D E F

Comportamento de uma Lista Lista: Remover F C D E F

Comportamento de uma Lista Lista: C D E

Comportamento de uma Lista Lista: Remover D C D E

Comportamento de uma Lista Lista: Remover D D C E

Comportamento de uma Lista Lista: C E

Listas, Filas e Pilhas LISTAS - IMPLEMENTAÇÃO

Listas Implementando as listas: As listas podem ser implementadas de várias formas, mas num aspecto mais geral podemos separar em duas principais: Em Arrays; ou Encadeadas.

Listas em Arrays Em Arrays: Imagine que a lista anterior tinha posições fixas e prédeterminadas: Um array é uma estrutura com posições fixas, cada elemento da lista deve ser colocado em uma posição no array; Ao inserir ou excluir um elemento, talvez seja necessário realocar todos os demais elementos.

Listas em Arrays Prós: Criar um array de qualquer tamanho é muito simples; Não há necessidade de compreender ponteiros ou referências; Contras: Limitações quanto ao tamanho de memória; Custo computacional maior; Alocação de memória exagerada.

Listas Encadeadas Encadeado, Dicionário Houaiss: adjetivo 1. disposto ou ligado por ou como por cadeias; ordenado, junto; 2. preso, submetido;

Listas Encadeadas Prós: Extremamente eficiente no custo de memória e de processamento; Nunca acarreta em movimentar todos os elementos; Contras: Envolve conceitos mais avançados de programação: Ponteiros ou Referências.

Listas Encadeadas Para criarmos uma lista encadeada, precisamos primeiro definir o que será armazenado nela; Por exemplo, para criarmos uma lista de contatos, gostaríamos de armazenar os nomes, telefones e e-mails de diversas pessoas:

Listas Encadeadas Exemplo de elemento Contato da lista: Contato string Nome; long Telefone; string Email;

Listas Encadeadas Exemplo da Idéia de Encadeamento: Contato string Nome; long Telefone; string Email; Contato string Nome; long Telefone; string Email; Contato string Nome; long Telefone; string Email; Mas como fazer isto?

Listas Encadeadas Conforme vamos criando elementos na memória do computador, estes elementos vão ficando espalhados e desconexos; Para criar listas encadeadas precisamos criar elementos que façam referência a outro elemento, ou seja, indiquem onde podemos encontrar um outro elemento.

Listas Encadeadas Exemplo de elemento encadeado: Contato string Nome; long Telefone; string Email; Contato Proximo;

Listas Encadeadas Exemplo com Elemento Encadeado: Contato string Nome = abc long Telefone = 123 string Email = a@b Contato Proximo = Contato string Nome = zxy long Telefone = 987 string Email = c@d Contato Proximo = Contato string Nome = qwe long Telefone = 546 string Email = r@f Contato Proximo =

Listas Encadeadas Exemplo Duplamente Encadeado: Contato string Nome = abc long Telefone = 123 string Email = a@b Contato Proximo = Contato Anterior = Contato string Nome = zxy long Telefone = 987 string Email = c@d Contato Proximo = Contato Anterior = Contato string Nome = qwe long Telefone = 546 string Email = r@f Contato Proximo = Contato Anterior =

Listas Encadeadas Iniciando uma lista vazia: Contato Inicio_Lista = null; Contato Fim_Lista = null; O valor de referência null é usado para quando ainda não existe um objeto na memória para qual a variável irá fazer referência; O último elemento da lista aponta para null. Iniciando uma lista com 1 elemento: Contato Inicio_Lista = new Contato();

Listas Encadeadas Criando a Lista: Contato Inicio_Lista = new Contato(); Contato Fim_Lista = Inicio_Lista; Inicio_Lista.Nome = abc ; Inicio_Lista.Telefone = 123; Inicio_Lista.Email = a@b ; Inicio_Lista.Proximo = null; Contato string Nome = abc long Telefone = 123 string Email = a@b Contato Proximo =

Listas Encadeadas Adicionando um segundo elemento: Contato novo = new Contato(); novo.nome = zxy ; novo.telefone = 987; novo.email = c@d ; novo.proximo = null; Fim_Lista.Proximo = novo; Fim_Lista = novo; Contato string Nome = abc long Telefone = 123 string Email = a@b Contato Proximo = Contato string Nome = zxy long Telefone = 987 string Email = c@d Contato Proximo =

Listas Encadeadas Percorrendo a lista: Contato aux = Inicio_Lista; while (aux!= null) { } //Faz alguma tarefa com o elemento aux aux = aux.proximo;

Listas Encadeadas Removendo o elemento zxy : Inicio_Lista.Proximo = null; Contato string Nome = abc long Telefone = 123 string Email = a@b Contato Proximo = Contato string Nome = zxy long Telefone = 987 string Email = c@d Contato Proximo =

Listas, Filas e Pilhas LISTAS EM JAVA

Collection - ArrayList Java disponibiliza diversas classes que implementam diversas funcionalidades de diferentes estruturas de dados: Conjunto chamado de Collections; Para a estrutura de dados Lista, iremos utilizar a classe disponível em: java.util.arraylist

Collections Lista: Localizada no pacote java.util Nome da classe: ArrayList Construção do objeto lista: ArrayList<ClasseArmazenada> lista = new ArrayList(); Onde iremos criar uma lista dinâmica que armazena objetos da ClasseArmazenada. Exemplo para lista de int: ArrayList<Integer> lista = new ArrayList();

Collections Com o objeto criado, utilizamos os seus métodos para executar ações: Adicionar um elemento: lista.add(99); //99 é o valor armazenado Recuperar um elemento: int valor = lista.get(0); //0 é o índice Verificar a quantidade de elementos: int qdade = lista.size(); //Neste caso será 1 Esvaziar a lista: lista.clear();

Collections Com o objeto criado, utilizamos os seus métodos para executar ações: Pesquisar por um elemento: int pos = lista.indexof(99); //retorna a posição do elemento. Se não for encontrado, retorna -1 Ordenar a Lista: Collections.sort(lista); Remover um elemento: lista.remove(0); //0 é o indice do elemento

Collections ArrayList: Mais informações na documentação da classe, no site do Java: Link para Java API - ArrayList

Collections - Exemplo Scanner entrada = new Scanner(System.in); ArrayList<Integer> lista = new ArrayList(); int numero; //Inserir elementos na lista do { System.out.print("Digite um número: "); numero = Integer.parseInt(entrada.nextLine()); if (numero!= 0) { lista.add(numero); } } while (numero!= 0); //Exibir todos os elementos da lista System.out.println("=== Os números inseridos foram ==="); for (int i = 0; i < lista.size(); i++) { System.out.println(lista.get(i)); }

Collection ArrayList (lista) Exercício: Construa um programa que utiliza um ArrayList para cadastrar alunos. Cada identificado pelos atributos: aluno será Nome; Matrícula; Data de Nascimento. O programa deverá apresentar um menu para o usuário com as opções: Cadastrar; Listar todos; Pesquisar; Remover.

Listas, Filas e Pilhas FILAS

Filas O que é uma fila em nosso cotidiano? As filas são diferentes das listas? Em quais sentidos? Onde usamos filas em nosso cotidiano? Detalhe o funcionamento de uma fila.

Filas Existem muitos exemplos de fila no mundo real: Uma fila de banco; No ponto de ônibus; Um grupo de carros aguardando sua vez no pedágio; Entre outros.

Filas Uma fila é um conjunto de itens a partir do qual podem-se eliminar itens numa extremidade (chamada início da fila) e no qual podem-se inserir itens na outra extremidade (chamada final da fila).

Filas Filas são casos especiais de listas; Obs: Nas listas, quando precisávamos criar um novo elemento, poderíamos inseri-lo ou removê-lo de qualquer posição da lista, exemplos: Na primeira posição; Na última posição; ou Em qualquer parte no meio da lista.

Filas Numa fila existe uma regra básica a ser seguida: Primeiro a Chegar é o Primeiro a Sair; Do inglês: FIFO First In, First Out; Um novo elemento da fila somente pode ser inserido na última posição(fim da fila); Um elemento só pode ser removido da primeira posição (inicio da fila).

Filas Tem um sentido de chegada: Fila vazia. Fim da Fila Inicio da Fila

Filas Inserindo Elementos: Inserir o elemento G G Fim da Fila Inicio da Fila

Filas Inserindo Elementos: O elemento entra na última posição. G Fim da Fila Inicio da Fila

Filas Inserindo Elementos: E avança até a primeira posição disponível. G Fim da Fila Inicio da Fila

Filas Inserindo Elementos: Inserir o elemento B B G Fim da Fila Inicio da Fila

Filas Inserindo Elementos: O elemento entra na última posição B G Fim da Fila Inicio da Fila

Filas Inserindo Elementos: E avança até a primeira posição disponível. B G Fim da Fila Inicio da Fila

Filas Inserindo Elementos: Inserir o elemento D D B G Fim da Fila Inicio da Fila

Filas Inserindo Elementos: O elemento entra na última posição D B G Fim da Fila Inicio da Fila

Filas Inserindo Elementos: E avança até a primeira posição disponível. D B G Fim da Fila Inicio da Fila

Filas Removendo Elementos: Remover o elemento B? Não podemos remover elementos que não estejam no inicio da fila! Da mesma forma, o elemento D não pode ser removido! D B G Fim da Fila Inicio da Fila

Filas Removendo Elementos: Remover o elemento da fila: Retiramos o primeiro elemento da fila; Neste momento o elemento deve ser utilizado. G D B Fim da Fila Inicio da Fila

Filas Removendo Elementos: Remover o elemento da fila: E os demais elementos avançam na fila. G D B Fim da Fila Inicio da Fila

Filas Exemplos de uso de filas na computação: Filas de impressão: Impressoras tem uma fila, caso vários documentos sejam impressos, por um ou mais usuários, os primeiros documentos impressos serão de quem enviar primeiro; Filas de processos: Vários programas podem estar sendo executados pelo sistema operacional. O mesmo tem uma fila que indica a ordem de qual será executado primeiro; Filas de tarefas: Um programa pode ter um conjunto de dados para processar. Estes dados podem estar dispostos em uma fila, onde o que foi inserido primeiro, será atendido primeiro.

Filas Variações de Filas: Fila de Prioridades: Cada item tem uma prioridade. Elementos mais prioritários podem ser atendidos antes, mesmo não estando no inicio da fila; Fila Circular: Neste tipo de fila os elementos nem sempre são removidos ao serem atendidos, mas voltam ao fim da fila para serem atendidos novamente mais tarde.

Listas, Filas e Pilhas IMPLEMENTANDO FILAS

Filas As filas podem ser implementadas em listas encadeadas ou em vetores; Vetores: Devemos ter duas variáveis indicando a posição do inicio e do fim da fila; Lista Encadeada: Devemos ter duas referências, uma ao elemento de inicio da fila e outra ou elemento do fim da fila.

Collections - Fila Fila: (documentação) Construir: Queue<Integer> fila = new LinkedList(); Adicionar: fila.add(20); Remover: int x = fila.remove(); Examinar: int y = fila. element(); Esvaziar: fila.clear(); Tamanho: fila.size();

Collection Queue (Fila) Exercício: Implemente um programa que contemple uma fila de contatos para um call center; As opções do programa devem ser: Inserir Contato: Deve solicitar ao usuário os dados e incluir o contato na fila; Próximo Contato: Sair. Deverá pegar o Contato do Inicio da Fila, removê-lo e mostrar os seus dados na tela para o usuário efetuar o contato com o cliente.

Listas, Filas e Pilhas PILHAS

Pilhas Um dos conceitos mais úteis na ciência da computação é o de pilha;

Pilhas Como eram as listas? Insere, remove ou utiliza qualquer elemento inserido; Como eram as filas? Insere apenas no fim da fila, utiliza e remove apenas o primeiro elemento inserido;

Pilhas Como são as Pilhas? Insere-se elementos no topo da pilha; Remove-se ou utiliza-se apenas o elemento que estiver no topo da pilha! LIFO (ou FILO): Last In, First Out; Último a entrar, primeiro a sair;

Pilhas Pilha Vazia: Topo = null; Pilha p

Pilhas Pilha Vazia: Topo = null; Inserindo elemento Z Z Pilha p

Pilha Vazia: Topo Pilhas Z Pilha p

Pilha Vazia: Topo Pilhas Inserindo elemento Y Y Z Pilha p

Pilha Vazia: Topo Pilhas Y Z Pilha p

Pilha Vazia: Topo Pilhas Inserindo elemento X X Y Z Pilha p

Pilha Vazia: Topo Pilhas X Y Z Pilha p

Pilha Vazia: Topo Pilhas Retirar o elemento Y? Não. X Y Z Pilha p

Pilhas Pilha Vazia: Topo Aux Aux = Desempilhar(p); X Y Z Pilha p

Pilhas Pilha Vazia: Topo Aux Aux2 = Desempilhar(p); X Aux2 Y Z Pilha p

Pilhas As pilhas podem ser implementadas em listas encadeadas ou em vetores; Vetores: Ter uma variável indicando a posição do topo da pilha; Lista Encadeada: Devemos ter uma referência ao elemento do topo da pilha.

Collections Pilha: (documentação) Construir: Stack<Integer> pilha = new Stack(); Adicionar: pilha.push(20); Remover: int x = pilha.pop(); Examinar: int y = pilha.peek(); Esvaziar: pilha.clear(); Tamanho: pilha.size();

Collection Stack (pilhas) Exercício: Crie um programa que gerencie uma PILHA de TAREFAS a serem cumpridas. As tarefas são Strings que descrevem uma ação a ser executada. O usuário deverá ter duas opções: Inserir tarefa na pilha; e Obter a próxima tarefa da pilha.