Estruturas de Dados com Jogos. Capítulo 7 Generalização de Listas Encadeadas



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

Estruturas de Dados com Jogos. Capítulo 1 Tipos Abstratos de Dados

Estruturas de Dados com Jogos

Estruturas de Dados Pilhas, Filas e Deques

PROGRAMAÇÃO II 3. PILHA DINÂMICA

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

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

Complexidade de Algoritmos

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

Listas Duplamente Encadeadas

Estruturas de Dados Aula 15: Árvores 17/05/2011

ESTRUTURA DE DADOS PILHA

EAD Árvore árvore binária

Estruturas de Dados com Jogos. Capítulo 6 Listas Cadastrais

Busca. Pesquisa sequencial

FUNDAÇÃO EDUCACIONAL DE ITUIUTABA

{ fazer Pós-Ordem sem recursividade. Poderá cair na prova!!! }

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

INF1007: Programação 2 10 Árvores Binárias. (c) Dept. Informática - PUC-Rio 1

EAD Árvore - representação usando listas ligadas

INF 1007 Programação II

Estruturas de Dados com Jogos. Capítulo 9 Árvores Balanceadas

Programas operam sobre dados. Dados são relacionados e possuem estrutura. Como representar e manipular dados em um computador

Tipos de Dado Abstrato: Listas, Filas e Pilhas

Estruturas de Dados. Prof. Gustavo Willam Pereira Créditos: Profa. Juliana Pinheiro Campos

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

Estruturas de Dados I

Pesquisa em Memória Primária. Prof. Jonas Potros

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

Templates e Pilhas. 1. Introdução

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

Árvore Binária de Busca

2ª Lista de Exercícios

DAS5102 Fundamentos da Estrutura da Informação

Árvores Binárias de Busca

Linguagem C: Árvores Binarias

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

ALGORITMOS E ESTRUTURAS DE DADOS Terceiro Trabalho Prático Recursividade e Pilhas

INF PROGRAMAÇÃO II LISTA DE EXERCÍCIOS 15

Na resolução de um problema por meio de um programa, a primeira providência é conceber um algoritmo adequado.

Orientação a Objetos

ESTRUTURA DE DADOS DCC013

Estruturas de Dados com Jogos. Capítulo 8 Árvores

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

ESTRUTURAS DE DADOS I. Notas de Aula. Prof. Dr. Gilberto Nakamiti

Pilhas. Profa Morganna Diniz

Métodos Computacionais. Árvores

Prof. Yandre Maldonado - 1 PONTEIROS. Prof. Yandre Maldonado e Gomes da Costa

Prof. Marcelo Nogueira

Primeiro Curso de Programação em C 3 a Edição

Árvores Binárias Balanceadas

Filas: conceitos e implementações

Sumário. Armazenamento de dados. Tipos de dados dinâmicos. Exemplos. Vectores Vectores dinâmicos Dados dinamicos. Declaração Uso 10-1

Estrutura de Dados. Introdução a Ponteiros. Prof. Gerson Borges Estrutura de Dados I 1

BUSCA EM LISTAS LISTAS SEQÜENCIAIS, LISTAS SIMPLESMENTE E DUPLAMENTE ENCADEADAS E LISTAS CIRCULARES

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

A Pilha. Aula 02. DPEE 1038 Estrutura de Dados para Automação Curso de Engenharia de Controle e Automação Universidade Federal de Santa Maria

Estrutura de Dados Pilha (Stack)

Aula 3 Alocação Dinâmica

PROGRAMAÇÃO II 3. FILA DINÂMICA

Tabela de símbolos: tabelas de espalhamento

A memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande

3.4 Representação física: alocação encadeada (dinâmica) Ptlista - variável ponteiro externa que indica o início da lista.

SISTEMAS ESPECIALISTAS

De uma forma ampla, o profissional egresso deverá ser capaz de desempenhar as seguintes funções:

Algoritmos e Estrutura de Dados II

UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO CENTRO UNIVERSITÁRIO NORTE DO ESPÍRITO SANTO

Tipos de Dados, Tipos Abstratos de Dados Estruturas de Dados

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS (C6/6) Curso: Informática

Métodos Os métodos de uma classe podem ser classificados como construtores, destrutores, funções ou procedimentos.

Hashing. Rafael Nunes LABSCI-UFMG

ALGORITMOS E ESTRUTURAS DE DADOS CES-11 CES-11 CES-11

Árvores Binárias. Observação: Material elaborado a partir do material do Professor Marcos Costa.

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

Estruturas de Dados Aula 11: TAD Pilha 09/05/2011

Avaliação de Expressões

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

DAS5102 Fundamentos da Estrutura da Informação

Números positivos ordenados

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

ESTRUTURAS DE DADOS AVANÇADAS (INF 1010) (a) Seja um TAD definido por uma lista circular implementada em um vetor.

Árvores Binárias de Busca

Estruturas de Dados. Listas Dinâmicas Duplamente Encadeadas & Variantes. Listas Duplamente Encadeadas

1. Introdução Definição Conceitos relacionados... 2

DAS5102 Fundamentos da Estrutura da Informação

SCC 202 Algoritmos e Estruturas de Dados I. Pilhas (Stacks) (implementação dinâmica)

Algoritmos de pesquisa. Tabelas de dispersão/hash

ÁRVORES BINÁRIAS DE PESQUISA

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

Roteiro 2: (Planilhas Eletrônicas) - Função procv / manipulação de formulários

CIÊNCIA DA COMPUTAÇÃO PROVA PARA TRANSFERÊNCIA

Trabalho 3: Agenda de Tarefas

Desafios de Programação TCC Turma A-1

Programação Orientada a Objetos C++

Orientação a Objetos

Algoritmos e Estruturas de Dados II. Trabalho Prático 2

Transcrição:

Estruturas de Dados com Jogos Capítulo 7 Generalização de Listas Encadeadas 1

Seus Objetivos neste Capítulo 2 Estudar técnicas complementares para a implementação de Listas Encadeadas: Encadeamento Duplo, Nó Header, e Primitivas de Baixo Nível; Ganhar experiência na elaboração de algoritmos sobre Listas Encadeadas, implementando Pilhas, Filas, Listas Cadastrais e Filas de Prioridades utilizando combinações das técnicas complementares estudadas; Conhecer conceitos relativos a generalização de Listas Encadeadas: Listas Multilineares, Listas de Listas, e Listas Genéricas Quanto ao Tipo do Elemento; Entender que é possível conceber sua própria estrutura encadeada, para atender a necessidades específicas de determinada aplicação.

3 Listas Duplamente Encadeadas

Listas Duplamente Encadeadas 4 P1 Dir = P3; P3 Esq = P2 Esq;

5 Listas Duplamente Encadeadas

Listas Duplamente Encadeadas 6 P2 = P1 Esq;

7 Listas Duplamente Encadeadas

Listas Duplamente Encadeadas 8 P1 Info = P1 Dir Dir Info;

Pilha como uma Lista Circular Duplamente Encadeada 9

10 Operação Empilha

Operação Empilha PAux = NewNode; PAux Info = X; 11

Operação Empilha PAux = NewNode; PAux Info = X; PAux Esq = Paux; 12

Operação Empilha PAux = NewNode; PAux Info = X; PAux Esq = Paux; PAux Dir= Paux; 13

Operação Empilha PAux = NewNode; PAux Info = X; PAux Esq = Paux; PAux Dir= Paux; 14 P.Topo = Paux;

Empilha PAux = NewNode; PAux Info = X; 15

Empilha PAux = NewNode; PAux Info = X; PAux Dir = P.Topo; PAux Esq = P.Topo Esq; 16

17 Empilha

Empilha P.Topo Esq Dir = PAux; 18

19 Empilha

Empilha P.Topo Esq = PAux; 20

Empilha P.Topo = PAux; PAux = Null; 21

Empilha Empilha (parâmetro por referência P do tipo Pilha, parâmetro X do tipo Char, parâmetro por referência DeuCerto do tipo Boolean) { Variável PAux do tipo NodePtr; Se (Cheia(P)==Verdadeiro) // se P estiver cheia, não empilha Então DeuCerto = Falso; Senão { DeuCerto = Verdadeiro; Se (Vazia(P)==Verdadeiro) Então {...} /* Caso 1 - Pilha Vazia */ Senão {...} /* Caso 2 - Pilha Não Vazia */ } // senão } fim Empilha 22

Exercícios Lista Duplamente Encadeada Exercícios 7.2 a 7.5 Pilha (Desempilha, Cria, Vazia, Cheia), Fila, Lista Cadastral. Todas as Operações. Identificar Casos. Visualizar Passo a Passo. 23

24 Listas Com Nó Header

Busca em uma Lista Não Ordenada Sem Header 25 Se (L == Null) // Lista Vazia Então AchouX = Falso; Senão { P = L Dir // P é um ponteiro auxiliar que percorre a Lista Enquanto (( P Info!= X ) E ( P!= L )) P = P Dir; Se (P Info == X) Então AchouX = Verdadeiro; Senão AchouX = Falso; } // senão

Busca em uma Lista Não Ordenada Com Header P = Header Dir; Header Info = X; Enquanto (P Info!= X) // E ( P!= L )) P = P Dir; Se (P!= Header) Então AchouX = Verdadeiro; Senão AchouX = Falso; // P é ponteiro auxiliar // apenas para auxiliar na busca // achamos um X de verdade // achamos um X de mentira 26

Exercícios Listas Com Nó Header Exercícios 7.6 e 7.7 Fila e Lista Cadastral. Todas as Operações. Identificar Casos. Visualizar Passo a Passo. 27

Operações de Baixo Nível para Listas Encadeadas 28

Operações de Baixo Nível para Listas Encadeadas Remove_P (LB, P, Ok) InsereADireitaDeP (LB, P, X,Ok) EstáNaLista (LB, X, P) Char Info_de_P (LB, P, Ok) Vazia (LB) Cheia(LB) Cria (LB) PegaOPrimeiro(LB, X, TemElemento) PegaOPróximo(LB, X, TemElemento) 29

Pilha Implementada a Partir de Operações de Baixo Nível InsereADireitaDeP (LB, P, X,Ok) Empilha (parâmetro por referência LB do tipo ListaBásica, parâmetro X do tipo Char, parâmetro por referência DeuCerto do tipo Boolean) { 30 } // fim Empilha

Pilha Implementada a Partir de Operações de Baixo Nível InsereADireitaDeP (LB, P, X,Ok) Empilha (parâmetro por referência LB do tipo ListaBásica, parâmetro X do tipo Char, parâmetro por referência DeuCerto do tipo Boolean) { 31 InsereADireitaDeP (LB, LB.Header, X, DeuCerto); /* DeuCerto é atualizado por InsereADireitaDeP */ } // fim Empilha

Pilha Implementada a Partir de Operações de Baixo Nível Char Info_de_P (LB, P, Ok) Remove_P (LB, P, Ok) Desempilha (parâmetro por referência LB do tipo ListaBásica, parâmetro por referência X do tipo Char, parâmetro por referência DeuCerto do tipo Boolean) { 32 } // fim Desempilha

Pilha Implementada a Partir de Operações de Baixo Nível Char Info_de_P (LB, P, Ok) Remove_P (LB, P, Ok) Desempilha (parâmetro por referência LB do tipo ListaBásica, parâmetro por referência X do tipo Char, parâmetro por referência DeuCerto do tipo Boolean) { 33 X = Info_de_P( LB, LB.Header Dir, DeuCerto ); Remove_P ( LB, LB.Header Dir, DeuCerto ); /* DeuCerto é atualizado por Remove_P */ } // fim Desempilha

Exercícios Operações de Baixo Nível para Listas Encadeadas Exercícios 7.9 e 7.10 Fila e Lista Cadastral Implementadas a partir das Operações de Baixo Nível. Todas as Operações. Identificar Casos. Visualizar Passo a Passo. Considere Implementação por Lista Duplamente Encadeada com Header. 34

Implementando as Operações de Baixo Nível InsereADireitaDeP (LB, P, X,Ok) 35

Implementando as Operações de Baixo Nível InsereADireitaDeP (LB, P, X,Ok) 36 PAux Dir = P Dir; PAux Esq = P;

Implementando as Operações de Baixo Nível InsereADireitaDeP (LB, P, X,Ok) 37

Implementando as Operações de Baixo Nível InsereADireitaDeP (LB, P, X,Ok) 38 P Dir Esq = PAux;

Implementando as Operações de Baixo Nível InsereADireitaDeP (LB, P, X,Ok) 39

Implementando as Operações de Baixo Nível InsereADireitaDeP (LB, P, X,Ok) P Dir = PAux; 40

Implementando as Operações de Baixo Nível 41 InsereADireitaDeP (parâmetro por referência LB do tipo ListaBásica, parâmetro P do tipo NodePtr, parâmetro por referência DeuCerto do tipo Boolean) { /* Insere um novo Nó a direita do Nó apontado por P, passado como parâmetro */ Variável auxiliar NovoNó do tipo NodePtr; // NodePtr = ponteiro para Nó Se (Cheia(LB)==Verdadeiro) Então DeuCerto = Falso; Senão { DeuCerto = Verdadeiro; PAux = NewNode; PAux Info = X; PAux Dir = P Dir; PAux Esq = P; P Dir Esq = PAux; P Dir = PAux; Aux = Null; } // fim Senão } // fim Insere_a_Direita_de_P

Exercícios Implementar Primitivas de Baixo Nível Exercício 7.12 Remove_P, EstáNaLista e Info_de_P Identificar Casos. Visualizar Passo a Passo. Considere Implementação por Lista Duplamente Encadeada com Header. 42

Generalização de Listas Encadeadas 43 Árvores

Generalização de Listas Encadeadas 44 Matrizes Esparsas

Generalização de Listas Encadeadas 45 Estruturas Aninhadas

Generalização de Listas Encadeadas /* definição da Classe Node */ template<class TipoDoElemento> class Node { // class Node usa template TipoDoElemento private: TipoDoElemento Info; // o tipo do elemento será definido posteriormente Node<TipoDoElemento>* Next;... /* definição da Classe Pilha */ template<class TipoDoElemento> class Pilha { private: Node<TipoDoElemento> * Topo;... /* no momento de criar as Pilhas, indicamos o tipo dos elementos */ Pilha<int> * p1 = new Pilha<int>(); // cria uma Pilha de Inteiros - P1 Pilha<Carta> * p2 = new Pilha<Carta>(); // cria uma Pilha de Cartas - P2 46 Estruturas Genéricas Quanto ao Tipo do Elemento: Templates

Generalização de Listas Encadeadas 47 Elementos de Tipos Diferentes em uma Mesma Estrutura

Exercícios Exercício 7.17 "Pilhas, Filas e Listas Cadastrais possuem uma funcionalidade bem definida, e podem ser implementadas através de Listas Encadeadas ou através de outras técnicas". Neste contexto, qual a diferença entre uma Lista Cadastral e uma Lista Encadeada? Exercício 7.13 Fila de Prioridades: Fila com Atendimento Prioritário a Idosos Fila de espera comdois critérios: (1) a idade do indivíduo que está na Fila, em anos; (2) a ordem de chegada. O primeiro a ser atendido será sempre o individuo com idade mais alta. Se houver mais que um individuo com a mesma idade, será respeitado o segundo critério, que é a ordem de chegada. Projete uma estrutura para implementar esta Fila com Atendimento Prioritário a Idosos. Implemente a funcionalidade definida com a técnica de implementação que considerar mais adequada. Exercício 7.14 Lista Cadastral em C++ 48

Passos Para Construir uma Boa Solução Passo 1: Identificar Casos e Desenhar a Situação Inicial. Passo 2: Desenho da Situação Final. Passo 3: Algoritmo para Tratar Cada Caso, Separadamente. Para Tratar Caso 2: DeleteNode(P); L=Null; Passo 4: Faça um Algoritmo Geral do Modo Mais Simples. 49 Passo 5: Testar Cada Caso, Alterando o Desenho Passo a Passo.

Avanço de Projeto Projete Sua Própria Estrutura! As Listas Encadeadas, e suas variações, constituem uma técnica poderosa e flexível para armazenamento temporário de conjuntos de elementos. É possível adaptar ou combinar diversas técnicas para projetar estrutura encadeada que melhor atenda as peculiaridades de sua aplicação. (Exercício 6.30) Técnica de Implementação Qual combinação de técnicas parece ser mais adequada às características do jogo referente ao Desafio 3 que você desenvolverá? 50

Comece a Desenvolver Seu Jogo Agora! Faça um jogo com a sua cara! Distribua para os seus amigos! 51 Estruturas de Dados com Jogos Aprender a programar pode ser divertido!