A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "Universidade do Vale do Rio dos Sinos - São Leopoldo -"— Transcrição da apresentação:

1 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 -

2 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

3 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

4 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

5 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 n ... Programação II – Prof. Mateus Raeder

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

7 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

8 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

9 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

10 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

11 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

12 Listas: tipos de armazenamento
Lista sequencial n ... Lista encadeada n ... Programação II – Prof. Mateus Raeder

13 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

14 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

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

16 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: 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

17 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

18 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

19 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

20 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

21 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

22 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

23 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

24 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

25 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

26 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

27 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

28 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

29 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

30 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


Carregar ppt "Universidade do Vale do Rio dos Sinos - São Leopoldo -"

Apresentações semelhantes


Anúncios Google