IFTO ESTRUTURA DE DADOS AULA 05 Prof. Manoel Campos da Silva Filho

Slides:



Advertisements
Apresentações semelhantes
Aula T10 – BCC202 Listas – Parte 2 Túlio Toffolo www. decom. ufop
Advertisements

UNICAMP Universidade Estadual de Campinas Centro Superior de Educação Tecnológica Divisão de Telecomunicações Propagação de Ondas e Antenas Prof.Dr. Leonardo.
INFORMAÇÕES COMPLEMENTARES
UNIVERSIDADE FEDERAL DO PARANÁ DISCIPLINA DE ANATOMIA PATOLÓGICA
Palestras, oficinas e outras atividades
Material pedagógico Multiplicar x 5 Clica!
Vamos contar D U De 10 até 69 Professor Vaz Nunes 1999 (Ovar-Portugal). Nenhuns direitos reservados, excepto para fins comerciais. Por favor, não coloque.
14/10/09 Uma animação possui: Início; Passo; Fim; 1.
Exercício do Tangram Tangram é um quebra-cabeças chinês no qual, usando 7 peças deve-se construir formas geométricas.
Listas encadeadas Prof. Rosana Palazon.
Listas duplamente encadeadas
Nome : Resolve estas operações começando no centro de cada espiral. Nos rectângulos põe o resultado de cada operação. Comprova se no final.
Copyright (c) 2003 by Valery Sklyarov and Iouliia Skliarova: DETUA, IEETA, Aveiro University, Portugal.
1 INQUÉRITOS PEDAGÓGICOS 2º Semestre 2003/2004 ANÁLISE GERAL DOS RESULTADOS OBTIDOS 1.Nº de RESPOSTAS ao inquérito 2003/2004 = (42,8%) 2.Comparação.
Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 5.
Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2.
Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 6.
Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 3.
Listas duplamente encadeadas
Campus Curitiba Departamento Acadêmico de Matemática Angela Olandoski Barboza UTFPR – Damat.
Curso de ADMINISTRAÇÃO
PERSPECTIVA CONCEITUAL
EXPRESSÕES ARITMÉTICAS
EXPRESSÕES ARITMÉTICAS
Crescimento Econômico Brasileiro : Uma Visão Comparada de Longo Prazo Prof. Giácomo Balbinotto Neto UFRGS.
Crescimento Econômico Brasileiro : Uma Visão Comparada de Longo Prazo Prof. Giácomo Balbinotto Neto UFRGS.
AED – Algoritmos e Estruturas de Dados
FUNÇÃO MODULAR.
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Aula 4 Nomes, Vinculações, Tipos e Escopos
Slides: Prof. João Fabro UTFPR - Curitiba
EXEMPLOS DE ESTRUTURAS PROTENDIDAS
Lista Encadeada Circular Lista Duplamente Encadeada
Listas Encadeadas.
Provas de Concursos Anteriores
Renda até 2 SM.
Hamburgo, Alemanha Definir o caminho que irá permitir a Lions Clubs International alcançar o seu potencial pleno como organização.
Como aplicar leis da lógica
MECÂNICA - ESTÁTICA Cabos Cap. 7.
(CESPE/ Técnico Judiciário do TRT 17ª Região/ES) O Superior Tribunal de Justiça entende que o candidato aprovado em concurso público dentro do limite.
MECÂNICA - DINÂMICA Exercícios Cap. 13, 14 e 17. TC027 - Mecânica Geral III - Dinâmica © 2013 Curotto, C.L. - UFPR 2 Problema
Bolha Posição de máx. W2 Ponto de Estagnação
MECÂNICA - ESTÁTICA Vetores Forças Cap. 2.
Árvores binárias de pesquisa com balanceamento
1 António Arnaut Duarte. 2 Sumário: primeiros passos;primeiros passos formatar fundo;formatar fundo configurar apresentação;configurar apresentação animação.
CATÁLOGO GÉIA PÁG. 1 GÉIA PÁG. 2 HESTIA PÁG. 3.
Estruturas de Dados com Jogos
Estruturas de Dados com Jogos
Estruturas de Dados com Jogos
Estruturas de Dados com Jogos
Lemas (Sudkamp)  .
2 Campo Elétrico Livro texto:
Coordenação Geral de Ensino da Faculdade
Principais operações em Listas TPA Listas Simples Inserção no Final 1.void insereNofinalDaLista(Lista *l, Elemento e){ 2.Lista paux,p; 3. p.
Lista Encadeada Circular Lista Duplamente Encadeada
Projeto Marcas que Eu Gosto 1 PROJETO MARCAS QUE EU GOSTO Estudos Quantitativo de Consumidores Janeiro / 2005.
EXERCÍCIOS PARA GUARDA-REDES
1 Copyright © 2010 The Nielsen Company. Confidential and proprietary. Title of Presentation Copyright © 2012 The Nielsen Company. Confidential and proprietary.
C ORROPIOS, C ARDINCHAS E C ÃES G RANDES O LIVRO de José Paixão em imagens – com pistas de leitura propostas por por www.joraga.net.
1 2 Observa ilustração. Cria um texto. Observa ilustração.
MATRICIAL CONSULTORIA LTDA. PREFEITURA MUNICIPAL DE GARIBALDI 23/10/ : ATENÇÃO Os locais descritos nas planilhas anexas não correspondem ao total.
Estatística Aula 9 – 28/02/2011.
CALENDÁRIO SEXY Ele & Ela. CALENDÁRIO SEXY Ele & Ela.
1 Aplicações do Fecho Regular. 2 A interseção de uma linguagem livre de contexto e uma linguagem regular é uma linguagem livre de contexto livre de contexto.
Curso: Cerimonial, Protocolo e Eventos
Olhe fixamente para a Bruxa Nariguda
Rio Verde - Goiás - Brasil
Máquina de Turing Universal
Caminhos da Cana Relatório e show de imagens Marcos Fava Neves Prof. FEA/USP Ribeirão Preto Purdue University (2013)
AM020C A interface entre Meio Ambiente, Sociedade e Economia Indicadores de produtividade e empregabilidade da agricultura do Brasil. Aluna Andressa Santos.
Transcrição da apresentação:

IFTO ESTRUTURA DE DADOS AULA 05 Prof. Manoel Campos da Silva Filho Tecnólogo em Processamento de Dados / Unitins Mestre em Engenharia Elétrica / UnB http://lab.ifto.edu.br/~mcampos http://manoelcampos.com mcampos at ifto.edu.br Versão 07/12/11

Trabalho O algoritmo apresentado nos slides seguintes implementa uma lista encadeada, onde cada elemento será inserido no final da lista (por questões de simplificação, por enquanto). Assim, a variável l será um ponteiro para o último elemento da lista. Com isto, em cada um dos slides seguintes, faça uma figura para representar a situação da lista encadeada após a execução das instruções apresentadas. Cada variável existente no slide deve ser representada graficamente. Todos os slides contendo código devem possuir imagens para representar as variáveis utilizadas, principalmente variáveis do tipo “struct lista” e “struct lista *” Para cada linha de código deve ser incluído um comentário, explicando o que ocorre na execução da mesma. Nenhuma linha pode ficar sem ser comentada. Os comentários devem informar o que a instrução faz e o porquê a mesma está sendo utilizada (por exemplo, indicando o porquê de determinado valor estar sendo utilizado na instrução. Nos slides que tiverem instruções em negrito, o aluno deverá considerar apenas tais linhas para criar os desenhos que representam as variáveis daquele trecho de código. O trabalho deve ser resolvido em duplas e ao final, postado pelo Moodle. Os dois integrantes do grupo devem enviar o arquivo. Os alunos tem até o final das 4 aulas para fazer o trabalho. Versão 07/12/11

Iniciando struct lista { int dado; struct lista *prox; }; struct lista *l = NULL; int quant = 0; ?? quant ?? l Versão 07/12/11

Inserindo 1o elemento na lista struct lista *novo = NULL; ?? novo Versão 07/12/11

Inserindo 1o elemento na lista novo = (struct lista *)malloc(sizeof(struct lista)); __ _ dado prox Versão 07/12/11

Inserindo 1o elemento na lista int dado; printf(“Digite o dado a ser inserido: ”); scanf(“%d”, &dado); novo->dado = dado; Versão 07/12/11

Inserindo 1o elemento na lista novo->prox = l; Versão 07/12/11

Inserindo 1o elemento na lista l = novo; quant++; Versão 07/12/11

Inserindo 2o elemento na lista struct lista *novo = NULL; Versão 07/12/11

Inserindo 2o elemento na lista novo = (struct lista *)malloc(sizeof(struct lista)); Versão 07/12/11

Inserindo 2o elemento na lista int dado; printf(“Digite o dado a ser inserido: ”); scanf(“%d”, &dado); novo->dado = dado; Versão 07/12/11

Inserindo 2o elemento na lista novo->prox = l; Versão 07/12/11

Inserindo 2o elemento na lista l = novo; quant++; Versão 07/12/11

Inserindo 3o elemento na lista struct lista *novo = NULL; Versão 07/12/11

Inserindo 3o elemento na lista novo = (struct lista *)malloc(sizeof(struct lista)); Versão 07/12/11

Inserindo 3o elemento na lista int dado; printf(“Digite o dado a ser inserido: ”); scanf(“%d”, &dado); novo->dado = dado; Versão 07/12/11

Inserindo 3o elemento na lista novo->prox = l; Versão 07/12/11

Inserindo 3o elemento na lista l = novo; quant++; Versão 07/12/11

Inserindo 4o elemento na lista struct lista *novo = NULL; Versão 07/12/11

Inserindo 4o elemento na lista novo = (struct lista *)malloc(sizeof(struct lista)); Versão 07/12/11

Inserindo 4o elemento na lista int dado; printf(“Digite o dado a ser inserido: ”); scanf(“%d”, &dado); novo->dado = dado; Versão 07/12/11

Inserindo 4o elemento na lista novo->prox = l; Versão 07/12/11

Inserindo 4o elemento na lista l = novo; quant++; Versão 07/12/11

Inserindo 5o elemento na lista struct lista *novo = NULL; Versão 07/12/11

Inserindo 5o elemento na lista novo = (struct lista *)malloc(sizeof(struct lista)); Versão 07/12/11

Inserindo 5o elemento na lista int dado; printf(“Digite o dado a ser inserido: ”); scanf(“%d”, &dado); novo->dado = dado; Versão 07/12/11

Inserindo 5o elemento na lista novo->prox = l; Versão 07/12/11

Inserindo 5o elemento na lista l = novo; quant++; Versão 07/12/11

Excluindo elemento Apesar de em uma lista encadeada não haver um índice para poder acessar as posições, o algoritmo implementado considera que o primeiro elemento é o da posição 0, o segundo da posição 1, e assim por diante. A variável pos indicará a posição a ser excluída. Versão 07/12/11

Excluindo último elemento (5°) int pos = 4; struct lista *excluir = NULL; //Informe o valor da variável quant //neste momento, colocando o valor //dentro do quadrado acima Versão 07/12/11

Excluindo último elemento (5°) if(pos == quant-1) { excluir = l; //continua no próximo slide...... } Versão 07/12/11

Excluindo último elemento (5°) if(pos == quant-1) { excluir = l; l = l->prox; //continua no próximo slide...... } Versão 07/12/11

Excluindo último elemento (5°) if(pos == quant-1) { excluir = l; l = l->prox; free(excluir) //continua no próximo slide...... } Versão 07/12/11

Excluindo último elemento (5°) if(pos == quant-1) { excluir = l; l = l->prox; free(excluir); quant--; } Versão 07/12/11

Excluindo 2° elemento int pos = 1; int i = quant-1; Versão 07/12/11

Excluindo 2° elemento struct lista *excluir = NULL; Versão 07/12/11

Excluindo 2° elemento struct lista *tmp = l; Versão 07/12/11

Excluindo 2° elemento tmp = tmp->prox; } } else { if(pos == quant-1) { //........................ } else { //Mostrar as variáveis, graficamente, quando o valor de i for igual a 3 while(i > pos+1) { tmp = tmp->prox; //continua no próximo slide } //continua no próximo slide... Versão 07/12/11

Excluindo 2° elemento tmp = tmp->prox; i--; } } else { if(pos == quant-1) { //........................ } else { //Mostrar as variáveis, graficamente, quando o valor de i for igual a 3 while(i > pos+1) { tmp = tmp->prox; i--; } //continua no próximo slide... Versão 07/12/11

Excluindo 2° elemento } else { } if(pos == quant-1) { //........................ } else { //Mostrar as variáveis, graficamente, quando o valor de i for igual a 2 while(i > pos+1) { tmp = tmp->prox; i--; } excluir = tmp->prox; //continua no próximo slide... } Versão 07/12/11

Excluindo 2° elemento } else { tmp->prox = excluir->prox; if(pos == quant-1) { //........................ } else { while(i > pos+1) { tmp = tmp->prox; i--; } excluir = tmp->prox; tmp->prox = excluir->prox; //continua no próximo slide... Versão 07/12/11

Excluindo 2° elemento } else { free(excluir); quant--; if(pos == quant-1) { //........................ } else { while(i > pos+1) { tmp = tmp->prox; i--; } excluir = tmp->prox; tmp->prox = excluir->prox; free(excluir); quant--; Versão 07/12/11

Exibindo os elementos da lista struct lista *tmp = l; int i = quant-1; Versão 07/12/11

Exibindo os elementos da lista while(tmp != NULL) { //Mostrar variáveis graficamente quando i for 2 printf("%d)\t%d\n", i, tmp->dado); tmp=tmp->prox; i--; } Versão 07/12/11

Exibindo os elementos da lista while(tmp != NULL) { //Mostrar variáveis graficamente quando i for 2 printf("%d)\t%d\n", i, tmp->dado); tmp=tmp->prox; i--; } Versão 07/12/11

Exibindo os elementos da lista while(tmp != NULL) { //Mostrar variáveis graficamente quando i for 1 printf("%d)\t%d\n", i, tmp->dado); tmp=tmp->prox; i--; } Versão 07/12/11

Exibindo os elementos da lista while(tmp != NULL) { //Mostrar variáveis graficamente quando i for 1 printf("%d)\t%d\n", i, tmp->dado); tmp=tmp->prox; i--; } Versão 07/12/11

Exibindo os elementos da lista while(tmp != NULL) { //Mostrar variáveis graficamente quando i for 0 printf("%d)\t%d\n", i, tmp->dado); tmp=tmp->prox; i--; } Versão 07/12/11

Exibindo os elementos da lista while(tmp != NULL) { //Mostrar variáveis graficamente quando i for 0 printf("%d)\t%d\n", i, tmp->dado); tmp=tmp->prox; i--; } Versão 07/12/11

Exibindo os elementos da lista while(tmp != NULL) { printf("%d)\t%d\n", i, tmp->dado); tmp=tmp->prox; i--; } printf(“\n----------------------------------------\n”); Versão 07/12/11

FIM Versão 07/12/11