Estrutura de Dados e Algoritmos e Programação e Computadores II. Aula 4: Listas Estáticas e Dinâmicas

Documentos relacionados
Estrutura de Dados Listas

Listas Lineares Ordenadas

ASSOCIAÇÃO PARAIBANA DE ENSINO RENOVADO FACULDADE PARAIBANA DE PROCESSAMENTO DE DADOS ESTRUTURA DE DADOS

Aula 14 Listas Duplamente Encadeadas. prof Leticia Winkler

Lista Ordenada. Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 / 35

Aula 11 Pilha Dinâmica. prof Leticia Winkler

Listas Lineares. continuando...

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

BCC202 - Estrutura de Dados I

Estruturas de Dados I

Algoritmos e Estrutura de Dados II. Árvore. Prof a Karina Oliveira.

Estruturas de Dados. Profº Carlos Alberto Teixeira Batista

LP II Estrutura de Dados

Listas (Parte 1) Túlio Toffolo BCC202 Aula 09 Algoritmos e Estruturas de Dados I

Carlos Eduardo Batista. Centro de Informática - UFPB

Aula 10 Alocação Dinâmica de Memória Listas Encadeadas. prof Leticia Winkler

Lista Encadeada (Linked List)

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

Introdução a Programação. Listas Encadeadas

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

ANHANGUERA ESTRUTURA DE DADOS AULA 04 MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA. Prof. Thomás da Costa

Estruturas de Dados. Parte dos slides a seguir são adaptações, extensões e recodificações em C dos originais:

Algoritmos e Estrutura de Dados. Aula 05 Estrutura de Dados: Listas (Parte II) Prof. Tiago A. E. Ferreira

ESTRUTURA DE DADOS (TCC )

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Métodos Computacionais. Listas Encadeadas

INF 1620 P2-01/11/03 Questão 1 Nome:

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

Estrutura de Dados: Lista Linear. Parte I Introdução e Listas Sequenciais Estáticas

Algoritmos e Estruturas de dados

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

Lista: conceito, representação e algoritmos

Instituto de C. Linguagem C: Listas. Luis Martí Instituto de Computação Universidade Federal Fluminense -

Lista: conceito, representação e algoritmos

INF1007: Programação 2 8 Listas Encadeadas. (c) Dept. Informática - PUC-Rio 1

Árvore B. Uma Árvore B de ordem m éumaárvore,talque: Cada nó contém no máximo m

ALOCAÇÃO DINÂMICA DE MEMÓRIA

Professora Jeane Melo

Estruturas de Dados. Módulo 12 - Filas. 9/8/2005 (c) Dept. Informática - PUC-Rio 1

Estruturas de Dados Aula 12: Outras Implementações de Listas 18/04/2011

Algoritmos e Estruturas de Dados I

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

Algoritmos e Estrutura de Dados II. Árvore AVL. Prof Márcio Bueno. / Material da Prof a Ana Eliza

LISTAS - ARMAZENAMENTO NÃO SEQUENCIAL COM MEMÓRIA DINÂMICA

Fontes Bibliográficas. Listas Circulares. Função Imprime

Estrutura de Dados: Lista Linear. Parte I Introdução e Listas Sequenciais Estáticas

Pilhas e Filas Encadeadas. Algoritmos e Estruturas de Dados I

Listas Ligadas (Encadeadas) Listas Simplesmente Encadeadas

Árvores Binárias de Busca

Instituto de C. Filas. Luis Martí Instituto de Computação Universidade Federal Fluminense -

Listas Estáticas. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof.

Estruturas de Dados Aula 11: TAD Pilha

Heaps. Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 / 35

Estruturas de Dados Estruturas de Dados Fundamentais

Edital de Seleção 024/2017 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

DAINF - Departamento de Informática

Árvores. SCC-202 Algoritmos e Estruturas de Dados I. Lucas Antiqueira

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

Algoritmos e Estruturas de Dados II IEC013

Algoritmos e Estrutura de Dados II. Árvore AVL. Prof a Karina Oliveira. Fonte: Prof a Ana Eliza

Carlos Eduardo Batista. Centro de Informática - UFPB

Árvores B. Prof. Márcio Bueno. / Fonte: Material da Prof a Ana Eliza Lopes Moura

SCC122 - Estruturas de Dados. Lista Estática Seqüencial

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

Estruturas de Dados Aula 10: Listas (parte 2) 19/04/2011

ÁRVORES ABB (ÁRVORES BINÁRIAS DE BUSCAS) Sérgio Carlos Portari Júnior

Matrizes Esparsas. Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista

Prof. Jesus José de Oliveira Neto

AULA 14 ESTRUTURA DE DADOS

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

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

Lista: conceito, representação e algoritmos

Estruturas de Dados - Filas

Listas Lineares. Livro Projeto de Algoritmos Nívio Ziviani Capítulo 3 Seção 3.1

SCC Algoritmos e Estruturas de Dados I

Árvores, Árvores Binárias e Árvores Binárias de Pesquisa. Rui Jorge Tramontin Jr.

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

Estrutura de Dados. Ricardo José Cabeça de Souza Parte 9

Algoritmos e Estruturas de Dados II IEC013

Aula T19 BCC202 Pesquisa (Parte 1) Pesquisa Binária. Túlio Toffolo

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

Matrizes Esparsas. atribuição (M, i, j, v) (i, j) IND. v nulo. v não nulo v nulo v não nulo. há espaço. não há espaço. retira substitui nada

Lista com descritor (continuação)

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?

AULA 6. Conceitos. Melhores momentos. Conceitos. Conceitos. Conceitos. Conceitos

Fontes Bibliográficas. Estruturas de Dados Aula 15: Árvores. Livros:

LISTAS ENCADEADAS OU NÃO- SEQÜENCIAIS. Estrutura de Dados

Árvores Binárias. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich

Linguagem C: Listas Encadeadas

Estruturas de Dados Filas

Ponteiros. Baseado nos slides do Prof. Mauro.

ÁRVORES BINÁRIAS DE BUSCA. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

//conteúdo do arquivo Matriz.h class Matriz { private: int *elementos; int numerodelinhas; int numerodecolunas; void setnumerodelinhas(int); void

Algoritmos e Estruturas de Dados Prof. Osório PIP/CA - Aula 05 Pag.: 1

Introdução a Programação. Tipos Abstratos de Dados Implementando Pilha e Fila

Listas Estáticas. Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista

Transcrição:

Estrutura de Dados e Algoritmos e Programação e Computadores II Aula 4: Listas Estáticas e Dinâmicas Listas Estáticas: com Vetores Dinâmicas: Listas Ligadas (com ponteiros) Variáveis e Métodos de Controle: Classes 1

Listas Uma lista é uma estrutura que armazena elementos de forma alinhada, ou seja, com elementos dispostos um após o outro. Exemplos Lista Telefônica Lista de clientes de uma agência bancária Lista de setores de disco a serem acessados por um sistema operacional Lista de pacotes a serem transmitidos em um nó de uma rede de comutação de pacotes. Listas Operações Realizadas com Listas Criar uma lista vazia Verificar se uma lista está vazia Obter o tamanho da uma lista Obter/modificar o valor do elemento de uma determinada posição na lista Obter a posição de elemento cujo valor é dado Inserir um novo elemento após (ou antes) de uma determinada posição na lista Remover um elemento de uma determinada posição na lista Exibir os elementos de uma lista Concatenar duas listas 2

Listas Formas de Representação Estática (com vetores) pode ser representado por um vetor na memória principal ou um arquivo seqüencial em disco Atenção: aqui trabalharemos apenas com vetores Listas Dinâmicas (com ponteiros) esta estrutura é tida como uma seqüência de elementos encadeados por ponteiros, ou seja, cada elemento deve conter, além do dado propriamente dito, uma referência para o próximo elemento da lista. 3

Listas com Classes Listas necessitam de variáveis de controle para armazenar suas informações. Inicialmente, tamanho da lista e elementos da lista. (Futuramente existirão outras.) Listas também necessitam de métodos de controle, como os citados anteriormente. Variáveis + Métodos = Classes Principalmente devido aos rótulos de permissão das classes, que protege variáveis e métodos de uso interno da classe. Listas com Classes class Lista { int n; // Número de elementos da lista. tipo dados; // Elementos (vetor ou ponteiro). public: Lista(); // Criar a lista (vazia). bool Empty(); // Verificar se está vazia. int Length(); // Obter o tamanho da lista. void SetValues (int pos, tipo elem); ~Lista(); // Remover a lista. ; 4

Listas Estáticas Características os elementos na lista estão armazenados fisicamente em posições consecutivas; a inserção de um elemento na posição a(i) causa o deslocamento a direita do elemento de a(i) ao último; a eliminação do elemento a(i) requer o deslocamento à esquerda do a(i+1) ao último; o vetor alocado possui um tamanho. Listas Estáticas class Lista { int n; // Número de elementos da lista. tipo dados[]; // Vetor de elementos. public: Lista(); // Criar a lista (vazia). bool Empty(); // Verificar se está vazia. int Length(); // Obter o tamanho da lista. void SetValues (int pos, tipo elem); ~Lista(); // Remover a lista. ; 5

Listas Estáticas Operações simples utilizando lista seqüencial 1. Criar a lista void Lista (int tamanho) { n = 0; max = tamanho; // não definida antes. dados = new tipo[tamanho]; 2. Verificar se a lista está vazia bool Empty () { return (n == 0); Listas Estáticas 3. Verificar se uma lista está cheia bool Full () { return (n == MAX); 4. Obter o tamanho de uma lista int Length () { return (n); 5. Obter o i-ésimo elemento de uma lista int elemento (int pos, tipo *elem) { if ((pos > n) (pos <= 0)) return (0); *elem = dados[pos-1]; return (1); 6

Listas Estáticas Pronto, a parte dos professores já foi feita, agora é a vez dos alunos: 6. Pesquisar um dado elemento, retornando a sua posição int posicao (tipo elem) { 7. Inserção de um elemento em uma determinada posição int inserir (int pos, tipo elem){ 8. Remoção do elemento de uma determinada posição int remover (int pos, tipo elem){ Listas Estáticas 6. Pesquisar um dado elemento, retornando a sua posição int posicao (tipo elem) { for (int i = 0; i < n; i++) if (dados[i] == elem) return (i+1); return (0); 7

Listas Estáticas 7. Inserção de um elemento em uma determinada posição int inserir (int pos, tipo elem){ int i; if ((n == MAX)) (pos > n + 1) ) return (0); for (i = n; i >= pos; i--) dados[i] = dados[i-1]; dados[pos-1] = elem; n++; return (1); Atenção: esta não é a melhor solução pois não foi considerada a alocação de um vetor maior quando o existente já estiver cheio. Listas Estáticas 8. Remoção do elemento de uma determinada posição int remover (int pos, tipo *elem){ int i; if ((pos > n) (pos <= 0)) return (0); *elem = dados[pos-1]; for (i = pos; i <= n-1; i++) dados[i-1] = dados[i]; n--; return (1); 8

Listas Dinâmicas Características: 1. deve exestir um ponteiro que aponte para o primeiro elemento da lista (início da lista); 2. cada elemento, ou nó, da lista aponta para o próximo sucessivamente (daí o nome listas ligadas) 3. o último elemento deve apontar para NULL (ou NIL), indicando o final da lista. Listas Dinâmicas Representação Gráfica: Lista Vazia dados Lista com 1 elemento NULL Ponteiro para o primeiro dados Lista com 2 elementos Elemento da Lista Ponteiro para o próximo dados Lista com N elementos dados 9

Listas Dinâmicas class Lista { int n; // Número de elementos da lista. struct No { tipo elem; // Elemento armazenado. struct No *prox; // Ponteiro para o próximo. tipono; tipono *dados; // Ponteiro para o primeiro. public: Lista(); // Criar a lista (vazia). bool Empty(); // Verificar se está vazia. int Length(); // Obter o tamanho da lista. void SetValues (int pos, tipo elem); ~Lista(); // Remover a lista. ; Listas Dinâmicas Operações simples 1. Criar a lista void Lista (int tamanho) { n = 0; dados = NULL; 2. Verificar se a lista está vazia bool Empty () { return (n == 0); 3. Verificar se uma lista está cheia: não é pertinente 10

Listas Dinâmicas 4. Obter o tamanho de uma lista int Length () { return (n); 5. Obter o i-ésimo elemento de uma lista int elemento (int pos, tipo *elem) { if ((pos > n) (pos <= 0)) return (0); tipono *p = dados; for (int i = 1; i < pos; i++) p = p->prox; *elem = p->elem; return (1); Listas Dinâmicas 6. Pesquisar um dado elemento, retornando a sua posição int posicao (tipo elem) { int i = 0; tipono *p = dados; while (p!= NULL) { i++; if (p->elem = elem) return i; p = p->prox; return (0); 11

Listas Dinâmicas 7. Inserção de um elemento no início int inserir_inicio (tipo elem){ tipono *p; p = new tipono; p->elem = elem; p->prox = dados; dados = p; n++; return (1); dados p x Listas Dinâmicas 8. Remoção do último elemento int remover_ultimo (tipo *elem){ if (n == 0) // Lista vazia. return 0; int i = 1; tipono *p = dados, *q; if (n == 1) // Lista com 1 Elemento. dados = NULL; // continua o else no próximo slide 12

Listas Dinâmicas else { // Lista com N Elementos. while (p->prox!= NULL) { q = p; p = p->prox; i++; q->prox = NULL; *elem = p->elem; delete p; n--; return (i); Listas Dinâmicas Outras funções para serem feitas: 9. Inserção de um elemento no final; 10. Remoção do primeiro elemento; 11. Inserção de elemento em determinada posição; 12. Remoção de elemento em determinada posição; 13. Liberar a lista (destrutor); 14. e inúmeras outras. 13