Universidade do Vale do Rio dos Sinos - São Leopoldo -

Slides:



Advertisements
Apresentações semelhantes
LISTAS Dilvan Moreira, parcialmente baseado em material do prof. Ricardo Campello.
Advertisements

TIPOS ABSTRATOS DE DADOS
ESTRUTURA DE DADOS Professor: Marcelo Mendes Turma: MBI-1
Estruturas de Dados Marcio Gonçalves.
Listas Lineares Estrutura que permite representar um conjunto de dados de forma a preservar a relação de ordem linear. Uma lista linear é composta de nós,
TADS – Tipos Abstratos de Dados
Programação Básica em Java
Listas lineares Listas Lineares Fila Dupla Pilha Fila Saída restrita
Walfredo Cirne walfredo.dsc.ufpb.br
Linguagem C LPG-I – Variáveis Estruturadas – Vetores
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Noções de Estrutura de Dados Logica de Programação
Robson Godoi / Sandra Siebra
Listas Simplesmente Encadeadas
Listas Lineares Estrutura de Dados.
Programação Orientada a Objetos com Java
Denise Guliato Faculdade de Computação – UFU
Listas lineares Denise Guliato Faculdade de Computação – UFU
Tipos Abstratos de Dados
Alocação Dinâmica de Memória
Árvores Binárias de Pesquisa
Conceitos e implementação em C
Aula 02 – BCC202 Tipo Abstrato de Dados Túlio Toffolo www. decom. ufop
Seminário 1: Revisão de C
Denise Guliato Faculdade de Computação – UFU
Prof. Daniel Aula 03.  Criar Projeto  Criar Pacote  Criando classes  Meu primeiro programa  Compilar  Comentários  Variáveis.
Faculdade de Informática e Tecnologia de Pernambuco ESTRUTURA DE DADOS
Estruturas de Dados Aula 9: Listas (parte 1)
Aula 3 Igor Ebrahim (ies) if669 - Introdução à Programação Monitoria de IP.
Prof. Mateus Raeder Professor.unisinos.br/mraeder
Programação II Laboratório II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo - Transparências baseadas nos originais da Prof.
Pilhas Profa. Nádia Félix.
Estruturas de Dados PROFESSOR DIÓGENES FURLAN. Estruturas de Dados (ED) Programas operam sobre dados Dados são relacionados e possuem estrutura Como representar.
Estruturas de Dados Aula 11: TAD Pilha
Listas Simplesmente Encadeadas
Universidade do Vale do Rio dos Sinos - São Leopoldo -
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Estruturas de Dados Aula 8: Tipos Abstratos de Dados 30/04/2014.
Estruturas de Dados Aula 17: Estruturas Genéricas
Programação Orientada a Objetos - Java
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Laboratório I Mateus Raeder. Mateus Raeder – maio de 2010 Arrays  Variável: armazena apenas um valor  Como criar em uma única variável, espaço para.
Lista Linear Base para outras estruturas
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Universidade do Vale do Rio dos Sinos - São Leopoldo -
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Laboratório I Mateus Raeder. Mateus Raeder – abril de 2010 Expressões booleanas  Tipo boolean -Tipo de dado primitivo -Possui os valores: true e false.
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo - Transparências baseadas nos originais da profa. Patrícia Jaques.
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo - Transparências baseadas nos originais da profa. Renata Galante.
Redes de Computadores I Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
 A linguagem Java tem diversas classes para a manipulação dos conjuntos de dados. Esses dados podem ser organizados de duas maneiras diferentes: ◦ Vetores.
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Estruturas de Dados Murilo Salgado Razoli.
Estrutura de Dados Aula 3 - Listas
Profa. Juliana Mafra ESTRUTURA DE DADOS 30 de Setembro de 2009 Faculdade de Informática e Tecnologia de Pernambuco.
INTRODUÇÃO THOBER CORADI DETOFENO, MSC. Aula 01 JOINVILLE 2015 Universidade do Estado de Santa Catarina – CCT/UDESC.
UNIVERSIDADE FEDERAL DO AMAZONAS- UFAM INSTITUTO DE CIÊNCIAS EXATAS E TECNOLOGIA- ICET SISTEMAS DE INFORMAÇÃO ALGORITMOS E ESTRUTURAS DE DADOS II PILHAS.
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Tipos Compostos Heterogêneos e Tipos Abstratos de Dados
Estrutura de Dados Prof. André Cypriano M. Costa
Alocação Dinâmica de Memória e Tipo Abstrato de Dados Cristiano Arbex Valle Vinicius Fernandes dos Santos
Transcrição da apresentação:

Universidade do Vale do Rio dos Sinos - São Leopoldo - Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -

Programação II – Prof. Mateus Raeder Tipos de dados Primitivos: a partir dos quais podemos definir os demais Estrutura de dados: constituídos de dados primitivos e/ou estruturas Tipos primitivos inteiro, real, lógico (boolean), caracter Estrutura de dados Conjunto de informações agrupadas de uma forma coerente (com alguma relação entre elas) Ex.: lista de chamada da turma Tipos de dados Programação II – Prof. Mateus Raeder

Tipo Abstrato de Dados (TAD) Um tipo abstrato de dados é a especificação matemática de um conjunto de dados e das operações que podem ser executadas sobre estes dados Os TADs definem o que cada operação faz, mas não como faz assim, um mesmo tipo abstrato de dado pode ser implementado de diferentes formas TADs são materializados pela estruturas de dados. Lista Encadeada (implementação com referências) Lista com alocação estática (implementação usando arrays) Em Java: TAD pode ser expresso por uma interface Programação II – Prof. Mateus Raeder

Programação II – Prof. Mateus Raeder Listas Lineares A Lista Linear é uma estrutura que permite representar um conjunto de dados de forma a preservar a relação de ordem existente entre eles Uma lista linear é um conjunto de n > 0 nós L[1] , L[2], ..., L[n], onde: Se n>0, L[1] é o primeiro nó Para 1<k<=n, o nó L[k] é precedido por L[k-1] Programação II – Prof. Mateus Raeder

Programação II – Prof. Mateus Raeder Listas Lineares Ordenação implícita L[1] e L[n] são, respectivamente, o primeiro e o último nó se 1 < k < n, então: L[k] é precedido por L(k-1) L[k] é seguido por L(k+1) Se n=0, dizemos que a lista é vazia 1 2 3 4 n ... Programação II – Prof. Mateus Raeder

Programação II – Prof. Mateus Raeder Estrutura dos nós Estrutura interna é abstraída Programação II – Prof. Mateus Raeder

Exemplos de aplicações com listas Notas de alunos Cadastro de funcionários de uma empresa Itens em estoque de uma empresa Dias da semana Vagões de um trem Letras de uma palavra Pessoas esperando o ônibus Cartas de baralho Torcedores do grêmio Programação II – Prof. Mateus Raeder

Listas Lineares: Classificação Listas lineares gerais SEM restrição de inserção e remoção de elementos Listas lineares Listas particulares COM restrição de inserção e remoção de elementos Programação II – Prof. Mateus Raeder

Programação II – Prof. Mateus Raeder Listas lineares Nas listas lineares gerais, a inclusão e remoção de elementos pode ser realizada em qualquer posição da lista. Essas listas não apresentam nenhuma restrição de acesso. Casos particulares de listas: Pilha Fila Deque Programação II – Prof. Mateus Raeder

Listas: tipos de armazenamento O tipo de armazenamento de uma lista linear pode ser classificado de acordo com a aposição relativa na memória (contígua ou não) de dois nós consecutivos na lista Lista linear com alocação estática de memória Chamada de Lista Sequencial Nós em posições contíguas de memória Geralmente representado por arrays Útil para implementar filas e pilhas (controle de início e fim) Programação II – Prof. Mateus Raeder

Listas: tipos de armazenamento O tipo de armazenamento de uma lista linear pode ser classificado de acordo com a aposição relativa na memória (contígua ou não) de dois nós consecutivos na lista Lista linear com alocação dinâmica de memória Chamada de Lista Encadeada Posições de memória são alocadas a medida que são necessárias Nós encontram-se aleatoriamente dispostos na memória e são interligados por ponteiros, que indicam o próximo nó Nós precisam de um campo a mais Programação II – Prof. Mateus Raeder

Listas: tipos de armazenamento Lista sequencial 1 2 3 4 n ... Lista encadeada 1 2 3 4 n ... Programação II – Prof. Mateus Raeder

Listas Lineares Gerais Sem restrição de acesso (inserções ou remoções podem ser realizadas em qualquer posição, inlusive no meio da lista) Ex.: Lista de chamada dos alunos da turma Cada nó é formado por campos que armazenam as características distintas das listas Cada nó possui uma chave (campo) identificador Lista Ordenada: os nós encontram-se ordenados segundo os valores de suas chaves Lista Não Ordenada: os nós não estão ordenados Programação II – Prof. Mateus Raeder

Operações sobre listas lineares Verificar se lista está cheia Verificar se lista está vazia Inserção de um nó na i-ésima posição Inserção de nó no final da lista Exclusão do i-ésimo nó Acesso ao i-ésimo nó Exibir conteúdo dos nós da lista Alteração do i-ésimo nó Localizar nó através da chave Combinação de duas ou mais listas Classificação da lista Cópia da lista Programação II – Prof. Mateus Raeder

Listas Lineares Gerais com Alocação Estática ou Listas Sequenciais Programação II – Prof. Mateus Raeder

Programação II – Prof. Mateus Raeder Lista Sequencial Alocação estática!! Suponhamos uma lista geral de números inteiros L que, em certo momento, possui os seguintes 7 elementos: 1 6 9 -3 0 3 5 Declarando um array de inteiros de nome L com MAX=10 elementos (L[0..MAX-1]), teremos a seguinte lista: 1 6 9 -3 3 5 Programação II – Prof. Mateus Raeder

Exercício Lista Sequencial Dada a lista acima, realize as operações abaixo (cumulativamente) e desenhe a lista resultante em cada passo: Inserir 7 no final Retirar o primeiro elemento Retirar o valor 8 da lista (valor, não posição) Inserir -4 no início Retirar o elemento na quinta posição 9 3 Programação II – Prof. Mateus Raeder

Operações sobre Listas Sequenciais public boolean isEmpty() verifica se a lista está vazia public boolean isFull() verifica se a lista está cheia public int getSize() retorna o número de nós da lista public int get(int index) retorna nó da posição index Programação II – Prof. Mateus Raeder

Operações sobre Listas Sequenciais public boolean insert(int element) insere dado no final da lista public boolean insert(int element, int pos) insere dado na posição especificada public boolean remove(int index) remove nó na posição especificada public void print() exibe o conteúdo da lista Programação II – Prof. Mateus Raeder

Programação II – Prof. Mateus Raeder Lista Sequencial Supondo a existência da classe SequentialList, desenhe a lista criada através do código abaixo (a saída do programa): public static void main(String args[]){ SequentialList l = new SequentialList(5); l.insert(1); l.insert(2); l.insert(4); l.insert(3, 2); l.remove(0); l.print(); } Programação II – Prof. Mateus Raeder

Programação II – Prof. Mateus Raeder Lista Sequencial public class SequentialList { private int list[]; private int last = -1; /* Método Construtor */ public SequentialList(int size) { list = new int[size]; } //demais métodos... Programação II – Prof. Mateus Raeder

Programação II – Prof. Mateus Raeder Lista Sequencial Verificar se está vazia, se está cheia e o tamanho Vazia: /* Retorna: - true se a lista está vazia - false caso contrário */ public boolean isEmpty() { if (last == -1) return true; else return false; } Programação II – Prof. Mateus Raeder

Programação II – Prof. Mateus Raeder Lista Sequencial Verificar se está vazia, se está cheia e o tamanho Cheia: /* Retorna: - true se a lista está cheia - false caso contrário */ public boolean isFull() { if (last == list.length - 1) return true; else return false; } Programação II – Prof. Mateus Raeder

Programação II – Prof. Mateus Raeder Lista Sequencial Verificar se está vazia, se está cheia e o tamanho Tamanho: /* Retorna o número de elementos na lista */ public int getSize() { return last + 1; //pois começa em 0 } Programação II – Prof. Mateus Raeder

Programação II – Prof. Mateus Raeder Lista Sequencial Retornar uma posição específica /* Retorna o elemento na posição especificada. */ public int get (int index) { if(isEmpty()){ System.out.println(“ERRO: Lista vazia!”); return 0; } if(index < 0 || index > last){ System.out.println(“ERRO: Índice inválido!”); return list[index]; Programação II – Prof. Mateus Raeder

Programação II – Prof. Mateus Raeder Lista Sequencial Inserir elementos No final /* Retorna true se o elemento foi inserido no final da lista e false caso contrário. */ public boolean insert (int element) { if(isFull()) return false; //não conseguiu inserir: lista cheia last++; list[last] = element; //insere o elemento return true; } Programação II – Prof. Mateus Raeder

Programação II – Prof. Mateus Raeder Lista Sequencial Inserir elementos Em uma determinada posição /* Retorna true se o elemento foi inserido na lista e false caso contrário. */ public boolean insert (int element, int pos) { if (isFull() || pos <0 || pos > last + 1) return false; for (int i = last + 1; i > pos; i--) { list[i] = list[i - 1]; } last++; list[pos] = element; return true; Programação II – Prof. Mateus Raeder

Programação II – Prof. Mateus Raeder Lista Sequencial Remover elementos Em uma determinada posição /* Retorna true se foi possível remover e false caso contrário */ public boolean remove (int index) { if (isEmpty()) return false; if (index < 0 || index > last) int numberofElements = last - index; if (numberofElements > 0) { System.arraycopy(list, index + 1, list, index, numberofElements); } last--; return true; Programação II – Prof. Mateus Raeder

Programação II – Prof. Mateus Raeder Lista Sequencial Exibir elementos de uma lista public void print() { for (int i = 0; i <= last; i++) System.out.println(list[i]); } Programação II – Prof. Mateus Raeder

Exercícios: Lista Sequencial No método main de uma classe qualquer, crie um objeto SequentialList representando uma lista sequencial de números. Realize, então, as seguintes operações: * inserir os números 23, -3, 1, 50 e 5; imprimir todos os números da lista; * inserir o número 4 no fim da lista; * ler um número e inseri-lo no início da lista; imprimir o tamanho da lista; * excluir o elemento da posição 9; * excluir o elemento da posição 3; * inserir o número 10 na segunda posição da lista. Desenhe como fica a lista após a realização de cada operação marcada com um * (inclusive o ponteiro last) Programação II – Prof. Mateus Raeder