Estruturas de Dados com Jogos

Slides:



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

Motivação para listas duplamente encadeadas e circulares
Pilhas e Filas CONTEÚDO (1) Pilhas (2) Filas.
Programação Avançada I
Programação II Estruturas de Dados
Gerenciamento de Arquivos, Páginas e Registros
1 Tipos definidos O programador pode definir seus próprios tipos de dados tipos complexos usados da mesma forma que os simples declaram-se variáveis utilizando-se.
1 Complexidade de Algoritmos Complexidade de pior caso Complexidade de melhor caso de uso bem menos freqüente em algumas situações específicas Complexidade.
Variáveis Dinâmicas Caixas de Nós
Listas lineares Listas Lineares Fila Dupla Pilha Fila Saída restrita
Estruturas de Dados e Algoritmos
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Robson Godoi / Sandra Siebra
Lista Encadeada Circular Lista Duplamente Encadeada
Listas Encadeadas.
Prof.° Jean Daniel Henri Merlin Andreazza Estrutura de Dados
Aula prática 12 Listas Encadeadas
© 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice.
Estrutura de Dados Unidade 10 Simulação do Algoritmo 10.3 REMOVER Caso B: Remover o elemento que está no meio da lista, sendo que a lista possui vários.
Listas Lineares Estrutura de Dados.
Estrutura de Dados Unidade 9 Simulação do exercício 9.2 CASO 02a Roberto Ferrari Mauricio Falvo.
Denise Guliato Faculdade de Computação – UFU
Denise Guliato Faculdade de Computação – UFU
Denise Guliato Faculdade de Computação – UFU
Aula 11 LISTAS LIGADAS.
Estruturas de Dados com Jogos
Estruturas de Dados com Jogos
Estruturas de Dados com Jogos
Estruturas de Dados com Jogos
Estruturas de Dados com Jogos
Estruturas de Dados com Jogos
Estruturas de Dados com Jogos
Estruturas de Dados com Jogos
Estruturas de Dados com Jogos
Estrutura de Dados Unidade 9 Simulação do exercício 9.2 CASO 02b Roberto Ferrari Mauricio Falvo.
Estrutura de Dados Unidade 9 Simulação do exercício 9.2 CASO 04b Roberto Ferrari Mauricio Falvo.
Estrutura de Dados Unidade 9 Simulação do Algoritmo 9.7 Caso C: FindNext – Estrutura com Elementos e Próximo Existe Roberto Ferrari Mauricio Falvo.
Estrutura de Dados Unidade 10 Simulação do Algoritmo 10.3 REMOVER Caso D: Remover elemento que é único na lista. Roberto Ferrari Mauricio Falvo.
Estrutura de Dados Unidade 10 Simulação do Algoritmo 10.3 REMOVER Caso C: Tentar remover elemento que não está na lista. Roberto Ferrari Mauricio Falvo.
Tipos Abstratos de Dados
Filas - Definição Uma fila possui o comportamento: O primeiro que chega é o primeiro que sai. O único elemento que pode ser removido da fila é o primeiro.
Implementação de FILAS com Alocação Dinâmica
Lista Encadeada Circular Lista Duplamente Encadeada
Estrutura de Dados Unidade 9 Simulação do Algoritmo 9.7 Caso E: FindNext – Estrutura Com Elementos e Próximo Não Existe Roberto Ferrari Mauricio Falvo.
Estrutura de Dados Unidade 6 Simulação do exercício 6.2 Elaborada por Mauricio Falvo.
Estrutura de Dados Unidade 6 Simulação do exercício 6.1 Elaborada por Mauricio Falvo.
Denise Guliato Faculdade de Computação – UFU
Estrutura de Dados Unidade 9 Simulação do exercício 9.2 CASO 03a
Aula 3 Vetores e Listas. Arrays (vetores) Array – sequência de elementos do mesmo tipo. Tamanho do Array – seu número de elementos (número fixo) Consequência:
Listas, Filas e Pilhas Katia Guimarães.
Aula 3 Listas, pilhas, filas.
Estruturas de Dados Aula 9: Listas (parte 1)
Ambiente de Execução - Rotinas
Estruturas de Dados Aula 11: TAD Pilha
Estrutura de Dados Unidade 10 Simulação do Algoritmo 10.3 REMOVER Caso A: Remover o elemento que está no primeiro nó da lista, sendo que a lista possui.
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática Disciplina: Estrutura de Dados Professor: Cheli dos S. Mendes da Costa Listas.
Estruturas de Dados Aula 17: Estruturas Genéricas
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática
Pilhas e Filas usando Alocação Estática e Dinâmica de Memória
Estruturas de Dados Aula 15: Árvores
Estruturas de Dados I Segundo Período de 2008 Gabarito da Primeira Prova.
Objetivos Ao concluir esta Disciplina espera-se que os alunos sejam capazes de: Distinguir os conceitos de Estrutura e Dados; Compreender o que são, como.
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.
INE5408 Estruturas de Dados Listas Encadeadas Simples.
11 Pilhas, Filas e Listas Duplamente Encadeadas Prof. Kariston Pereira Adaptado de Material gentilmente fornecido pelo Prof. Rui Tramontin (DCC/UDESC)
Pilha dinâmica Prof.° Jean Daniel Henri Merlin Andreazza
Lista Ligada Estrutura de Dados II Prof. Gale. Vantagens  Crescem (ou decrescem) à medida que elementos são inseridos (ou removidos)  seqüência encadeada.
Alocação Dinâmica Dilvan Moreira. Objetivos  Entender o que são e como usar:  Gerenciamento de Memória  Alocação Dinâmica em C.
Transcrição da apresentação:

Estruturas de Dados com Jogos Capítulo 4 Listas Encadeadas

Seus Objetivos neste Capítulo Entender o que é Alocação Encadeada de Memória, no contexto do armazenamento temporário de conjuntos de elementos; conhecer o conceito de Listas Encadeadas, e sua representação usual; Desenvolver habilidade para implementar Pilhas e Filas através do conceito de Listas Encadeadas;

Alocação Sequencial Versus Alocação Encadeada

Definição: Alocação Encadeada de Memória para um Conjunto de Elementos Os elementos não são armazenados, necessariamente, em posições de memória adjacentes; A ordem dos elementos precisa ser explicitamente indicada: cada elemento do conjunto aponta qual é o próximo na sequencia.

Representação Usual de uma Lista Encadeada

Notação para Manipulação de Listas Encadeadas

Notação para Manipulação de Listas Encadeadas Operações X = P→Info; X recebe o valor do campo Info do nó apontado por P. P→Info = X; O campo Info do Nó apontado por P recebe o valor de X. P1 = P2; O ponteiro P1 passa a apontar para onde aponta P2. P1 = P→Next; P1 passa a apontar para onde aponta o campo Next do Nó apontado por P. P→Next = P1; O campo Next do Nó apontado por P passa a apontar para onde aponta P1. P = NewNode; Aloca um Nó e retorna o endereço em P. DeleteNode( P ); Libera (desaloca) o Nó apontado por P.

Notação para Manipulação de Listas Encadeadas Acessando e Atualizando o Campo Info de um Nó

Notação para Manipulação de Listas Encadeadas Acessando e Atualizando o Campo Info de um Nó

Notação para Manipulação de Listas Encadeadas Acessando e Atualizando o Campo Info de um Nó

Notação para Manipulação de Listas Encadeadas Acessando e Atualizando o Campo Info de um Nó

Notação para Manipulação de Listas Encadeadas Acessando e Atualizando o Campo Info de um Nó

Notação para Manipulação de Listas Encadeadas Acessando e Atualizando o Campo Info de um Nó

Notação para Manipulação de Listas Encadeadas Operações X = P→Info; X recebe o valor do campo Info do nó apontado por P. P→Info = X; O campo Info do Nó apontado por P recebe o valor de X. P1 = P2; O ponteiro P1 passa a apontar para onde aponta P2. P1 = P→Next; P1 passa a apontar para onde aponta o campo Next do Nó apontado por P. P→Next = P1; O campo Next do Nó apontado por P passa a apontar para onde aponta P1. P = NewNode; Aloca um Nó e retorna o endereço em P. DeleteNode( P ); Libera (desaloca) o Nó apontado por P.

Notação para Manipulação de Listas Encadeadas Acessando e Atualizando o Campo Next de um Nó

Notação para Manipulação de Listas Encadeadas Acessando e Atualizando o Campo Next de um Nó

Notação para Manipulação de Listas Encadeadas Acessando e Atualizando o Campo Next de um Nó

Notação para Manipulação de Listas Encadeadas Acessando e Atualizando o Campo Next de um Nó

Notação para Manipulação de Listas Encadeadas Acessando e Atualizando o Campo Next de um Nó

Notação para Manipulação de Listas Encadeadas Acessando e Atualizando o Campo Next de um Nó

Notação para Manipulação de Listas Encadeadas Operações X = P→Info; X recebe o valor do campo Info do nó apontado por P. P→Info = X; O campo Info do Nó apontado por P recebe o valor de X. P1 = P2; O ponteiro P1 passa a apontar para onde aponta P2. P1 = P→Next; P1 passa a apontar para onde aponta o campo Next do Nó apontado por P. P→Next = P1; O campo Next do Nó apontado por P passa a apontar para onde aponta P1. P = NewNode; Aloca um Nó e retorna o endereço em P. DeleteNode( P ); Libera (desaloca) o Nó apontado por P.

Notação para Manipulação de Listas Encadeadas Movendo Ponteiros

Notação para Manipulação de Listas Encadeadas Movendo Ponteiros

Notação para Manipulação de Listas Encadeadas Movendo Ponteiros

Notação para Manipulação de Listas Encadeadas Movendo Ponteiros

Notação para Manipulação de Listas Encadeadas Operações X = P→Info; X recebe o valor do campo Info do nó apontado por P. P→Info = X; O campo Info do Nó apontado por P recebe o valor de X. P1 = P2; O ponteiro P1 passa a apontar para onde aponta P2. P1 = P→Next; P1 passa a apontar para onde aponta o campo Next do Nó apontado por P. P→Next = P1; O campo Next do Nó apontado por P passa a apontar para onde aponta P1. P = NewNode; Aloca um Nó e retorna o endereço em P. DeleteNode( P ); Libera (desaloca) o Nó apontado por P.

Notação para Manipulação de Listas Encadeadas Alocando e Desalocando Nós

Notação para Manipulação de Listas Encadeadas Alocando e Desalocando Nós

Notação para Manipulação de Listas Encadeadas Alocando e Desalocando Nós

Notação para Manipulação de Listas Encadeadas Alocando e Desalocando Nós

Notação para Manipulação de Listas Encadeadas Alocando e Desalocando Nós

Notação para Manipulação de Listas Encadeadas Alocando e Desalocando Nós

Notação para Manipulação de Listas Encadeadas Operações X = P→Info; X recebe o valor do campo Info do nó apontado por P. P→Info = X; O campo Info do Nó apontado por P recebe o valor de X. P1 = P2; O ponteiro P1 passa a apontar para onde aponta P2. P1 = P→Next; P1 passa a apontar para onde aponta o campo Next do Nó apontado por P. P→Next = P1; O campo Next do Nó apontado por P passa a apontar para onde aponta P1. P = NewNode; Aloca um Nó e retorna o endereço em P. DeleteNode( P ); Libera (desaloca) o Nó apontado por P.

Pilha como uma Lista Encadeada

Pilha como uma Lista Encadeada

Exercício 4.1 Operação 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); /* Empilha o elemento X na Pilha P. O parâmetro DeuCerto deve indicar se a operação foi bem sucedida ou não */  

Exercício 4.1 Operação Empilha

Exercício 4.1 Operação Empilha

Exercício 4.1 Operação Empilha

Exercício 4.1 Operação Empilha

Exercício 4.1 Operação Empilha

Exercício 4.1 Operação Empilha

Exercício 4.1 Operação 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; /* PAux é uma variável auxiliar do tipo NodePtr. O tipo Pilha, nesta implementação encadeada, contém o campo P.Topo, que também é do tipo NodePtr, ou seja, um ponteiro para Nó */   Se (Cheia(P)== Verdadeiro) // se a Pilha P estiver cheia... Então DeuCerto = Falso; // ... não podemos empilhar Senão { PAux = NewNode; // aloca um novo Nó PAux→Info = X; // armazena o valor de X no novo Nó PAux→Next = P.Topo; // o próximo deste novo nó será o elemento do topo P.Topo = PAux; // o topo da pilha passa a ser o novo Nó DeuCerto = Verdadeiro;}; // a operação deu certo } // fim do procedimento Empilha

Exercícios Exercício 4.2 Executar passo a Passo a Operação Empilha Partindo de Situação Inicial com Um Elemento na Pilha Exercícios 4.3, 4.4, 4.5 e 4.6 Operações Desempilha, Cria, Vazia e Cheia Exercício 4.7 Executar passo a Passo a Operação Desempilha Partindo de Situação Inicial com Um Único Elemento na Pilha

Exercício 4.2 Operação Desempilha

Exercícios 4.4 a 4.6 Cria (parâmetro por referência P do tipo Pilha) { /* Cria a Pilha P, inicializando a Pilha como vazia - sem nenhum elemento. */ P.Topo = Null; // P.Topo passa a apontar para Null. Isso indica que a Pilha está vazia. } // fim do Cria   Boolean Vazia (parâmetro por referência P do tipo Pilha) { /* Retorna Verdadeiro se a Pilha P estiver sem nenhum elemento; Falso caso contrário */ Se (P.Topo == Null) Então Retorne Verdadeiro; // a Pilha P está vazia Senão Retorne Falso; // a Pilha P não está vazia } // fim do Vazia Boolean Cheia (parâmetro por referência P do tipo Pilha) { /* Nesta implementação conceitual, a operação cheia retorna sempre Falso */ Retorne Falso; // nesta implementação conceitual, a Pilha nunca estará cheia. } // fim do Cheia

Exercício 4.3 Desempilha(parâmetro por referência P do tipo Pilha, parâmetro por referência X do tipo Char, parâmetro por referência DeuCerto do tipo Boolean) { /* Se a Pilha P estiver vazia o parâmetro DeuCerto deve retornar Falso. Caso a Pilha P não estiver vazia, a operação Desempilha deve retornar o valor do elemento do Topo da Pilha no parâmetro X. O Nó em que se encontra o elemento do Topo deve ser desalocado, e o Topo da Pilha deve então ser atualizado para o próximo elemento */   Variável PAux do tipo NodePtr; // ponteiro para Nó, auxiliar Se (Vazia( P ) == Verdadeiro) Então DeuCerto = Falso; Senão { DeuCerto = Verdadeiro; X = P.Topo→Info; PAux = P.Topo ; // aponta PAux para P.Topo, para guardar este endereço // antes de mudar P.Topo de lugar P.Topo = P.Topo→Next; // o topo da Pilha avança para o próximo elemento. DeleteNode( PAux ); // desaloca o Nó que armazenava o elemento do topo } } // fim do Desempilha

Exercícios 4.8 a 4.12 - Fila Implementada como Lista Encadeada Solução Com Dois Ponteiros

Exercício 4.13- Fila Implementada como Lista Encadeada Circular

Exercício 4.14- Fila como Lista Encadeada Circular com Só 1 Ponteiro

Exercício 4.15- Pilha como Lista Encadeada Circular

Exercício 4.18 Avanço de Projeto Após fazer uma reflexão sobre as vantagens e desvantagens da Alocação Sequencial e da Alocação Encadeada, reflita sobre qual técnica de implementação parece ser mais adequada às características dos jogos que você está desenvolvendo no momento: Alocação Sequencial ou Alocação Encadeada de Memória? Estruturas de Dados com Jogos Aprender a programar pode ser divertido!