PRIMEIRA AVALIAÇÃO IDENTIFICAÇÃO. Nome: 22/09/2010

Documentos relacionados
INF P4-12/12/09 Questão 1 Nome:

INF1007 Programação 2 9 Pilhas. (c) Dept. Informática - PUC-Rio 1

PRIMEIRA AVALIAÇÃO IDENTIFICAÇÃO. Nome: 04/05/2011

L I C R P * * V O * * A * A F * * * * *

Departamento de Informática - PUC-Rio INF 1007 Programação 2 P3 23/06/2010

INF 1007 Programação II

Departamento de Informática - PUC-Rio INF 1007 Programação 2 P3 26/11/2010

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

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

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

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

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

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

Métodos Computacionais. Listas Encadeadas

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

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

Lista de Exercícios 04

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

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

Professora Jeane Melo

Atividade de laboratório listas encadeadas simples

Lista de Exercícios sobre Listas Implementadas por Encadeamento

Módulo 10 Listas Encadeadas

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

Pilhas e Filas Encadeadas. Algoritmos e Estruturas de Dados I

BCC202 - Estrutura de Dados I

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

Lista: conceito, representação e algoritmos

Estruturas de Dados I

Algoritmos e Estruturas de Dados I

INF 1620 P2-23/10/04 Questão 1 Nome:

Métodos Computacionais. Variações de Listas Encadeadas

Aula 7 Encadeamento de Memória

INF 1620 P3-29/06/04 Questão 1 Nome:

Listas Lineares. continuando...

INF 1620 P3-02/07/02 Questão 1 Nome:

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

2. Considerando as seguintes declarações de uma lista encadeada

INF 1620 P4-06/12/02 Questão 1 Nome:

Lista: conceito, representação e algoritmos

Listas Ligadas (Encadeadas) Listas Simplesmente Encadeadas

INF 1620 P4-27/06/02 Questão 1 Nome:

Estruturas de Dados Filas

Linguagem C: Listas Encadeadas

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

INF 1620 P4-01/07/08 Questão 1 Nome:

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

INF 1620 P3-25/11/05 Questão 1 Nome:

Algoritmos e Estruturas de Dados II IEC013

UNIVERSIDADE DA BEIRA INTERIOR

INF 1620 P4-13/12/01 Questão 1 Nome:

Aula 14 Listas Duplamente Encadeadas. prof Leticia Winkler

Lista: conceito, representação e algoritmos

Lista Encadeada (Linked List)

Estruturas de Dados. Módulo 17 - Busca. 2/6/2005 (c) Dept. Informática - PUC-Rio 1

INF 1007 Programação II

INF 1620 P3-21/06/08 Questão 1 Nome:

REVISÃO DE C. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

Listas Lineares Ordenadas

BCC202 - Estrutura de Dados I

Módulo 18 - Tabelas de Dispersão. Referências

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

INF 1620 P4 11/12/06 Questão 1 Nome:

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

Departamento de Informática - PUC-Rio INF 1007 Programação 2 P4 07/12/2010

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

Matrizes esparsas: definição

Listas ordenadas. SCC-202 Algoritmos e Estruturas de Dados I. Prof. Thiago A. S. Pardo. Listas em que os elementos estão ordenados por algum critério

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

INF 1007 Programação II

Lista com saltos - generalidades

Listas Encadeadas. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Algoritmos e Estruturas de dados

Listas: nós de cabeçalho, listas não homogêneas, listas generalizadas

Estrutura de Dados Listas

Lista com descritor (continuação)

Filas. Prof. Túlio Toffolo BCC202 Aula 12 Algoritmos e Estruturas de Dados I

Estruturas de Dados Estruturas de Dados Fundamentais

ÁRVORE B. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

Introdução à Computação II (Noturno) BCC Unesp Rio Claro/SP 2015 em PDF via Moodle: Escolha apenas 5 exercícios para entrega Exercício 01 (Pilhas)

PONTEIROS E LISTAS. Kalinka Regina Lucas Jaquie Castelo Branco

P3 Programação II Departamento de Informática/PUC-Rio 27 de junho de 2013

PRIMEIRA AVALIAÇÃO IDENTIFICAÇÃO. Nome: ID: 25/04/2005. PARTE I Questões Objetivas

12. Filas Interface do tipo fila

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

Listas ordenadas. Listas ordenadas. Listas ordenadas. Listas ordenadas. Listas ordenadas. Listas ordenadas. Definição

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

Estruturas de Dados - Filas

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

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

Slide 01 16/03/2017. Estruturas de Dados. Prof. Cleziel Franzoni da /Cleziel.

Universidade Federal do Ma Curso de Ciência da Computação

TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS TURMA 2008/1 2 PERÍODO MÓDULO 3 AVALIAÇÃO MP2 DATA 2/10/2008 ESTRUTURAS DE DADOS 2008/2

1. Listas sequenciais versus listas ligadas. Lista sequencial

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

INF 1620 P3-06/12/03 Questão 1 Nome:

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

Transcrição:

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA Bacharelado em Ciência da Computação e Engenharia da Computação INF 01203 Estruturas de Dados Profa. Renata Galante (galante@inf.ufrgs.br ) PRIMEIRA AVALIAÇÃO IDENTIFICAÇÃO Nome: 22/09/2010 01. (valor 1.0) Quais abordagens você utilizaria para a especificação do modelo lógico (lista, pilha, fila, deque) e do modelo físico (lista com array, lista circular com array, lista simplesmente encadaeada, lista simplemente encadeada circular, lista duplamente encadeada, lista duplamente encadeada circular), se o objetivo fosse implementar uma estrutura de dados que otmizasse os exemplos descritos a seguir. Justifique sua resposta. a) O controlador do disco é um processador dedicado para controlar o acesso ao disco. Vários usuários podem requisitar acesso a determinados setores do disco ao mesmo tempo. Como o atendimento a cada requisição demora alguns milisegundos, o controlador tem que gerenciar uma estrutura de dados de requisições dos usuários. b) Na execução de um programa, quando se entra num novo bloco, podem existir novas variáveis. Estas novas variáveis são alocadas em uma estrutura de dados de variáveis, pois na saída do bloco o espaço ocupado deve ser liberado para dar lugar a novas variáveis quando a execução entrar em novos blocos. Observe a figura que ilustra tal situação.

02. parte I (valor 1,0) Considerando a estrutura de dados apresentada no item a) da tabela apresentada a seguir, explique qual problema é solucionado pelo trecho de código no item b) da tabela apresentada a seguir. a) Tipo de Dados struct lista int info struct lista* prox; typedef struct lista Lista; b) Função oquesera Lista* oquesera (Lista* lis, int n) Lista* p; /* variável auxiliar para percorrer a lista */ Lista* q; /* variável auxiliar */ int m = 1; p = lis; while(p!= NULL && m <= n) m = m+1; q = p->prox; free(p); p = q; } return p; } 02. parte II (valor 1,0) Demonstre, passo a passo, a execução da função (teste de mesa) para os dois casos apresentados a seguir: Caso 01 lis = 1 -> 2 -> 3 -> 4 n = 2 Caso 02 lis = 1 -> 2 -> 3 -> 4 n = 5

03. (valor 1.0) Considere duas listas simplesmente encadeadas circulares, não vazias. Os ponteiros para o primeiro elemento de cada lista são lis1 e lis2, respectivamente. Analise o seguinte trecho de código e responda as duas questões a seguir: paux = lis1->prox; lis1->prox = lis2->prox; lis2->prox = paux; lis1 = lis2; lis2 = NULL; a) Qual o resultado da execução desse trecho de código? b) Qual o resultado da execução desse trecho de código caso lis1 e lis2 apontassem para dois elementos distintos da mesma lista circular?

04. (valor 3,0) Um sistema de navegação armazena o caminho entre dois pontos como uma lista encadeada de dados do tipo Logradouro (descrito a seguir). O campo nome contém o nome do Logradouro e o campo prox aponta para o próximo elemento da lista. struct logradouro char nome[51]; struct logradouro *prox; typedef struct logradouro Logradouro; Considere o tipo abstrato de dados Pilha, definido para armazenar ponteiros para cadeias de caracteres e que implementa as funções descritas na tabela a seguir: Pilha* pilha_cria (void); Retorna o ponteiro para uma nova pilha alocada dinamicamente. char* pilha_pop (Pilha* p); Retira um elemento do topo de uma pilha. O ponteiro da pilha é passado como parâmetro, e o retorno é o valor deste elemento. void pilha_push (Pilha** p, char* x); Insere um elemento no topo de uma pilha. O ponteiro da pilha e o elemento a ser inserido são passados como parâmetros int pilha_vazia (Pilha* p); Verifica se a pilha está vazia. O ponteiro da pilha é passado como parâmetro e o retorno é 1, se a pilha está vazia, ou 0, caso contrário. void pilha_libera (Pilha* p); Esvazia e libera a memória alocada para uma pilha. O ponteiro da pilha é passado como parâmetro. Crie uma função em C para comparar dois caminhos e verificar se um é o inverso do outro, ou seja, comparar as duas listas que armazenam caminhos e verificar se o conteúdo de uma lista --- seqüência de nomes de logradouros armazenados em cada nó --- equivale ao da outra lista na ordem inversa. Essa função deve usar o tipo abstrato Pilha para auxiliar nessa comparação. Os parâmetros da função são os ponteiros l1 e l2 para as duas listas. O retorno da função deve ser 1 se uma lista for o inverso da outra e 0, caso contrário. A função tem o seguinte protótipo: int Compara_listas(Logradouro* l1, Logradouro* l2);

05. (valor 3,0) Um site de busca (semelhante ao Google) armazena todas as expressões procuradas em uma lista duplamente encadeada não-circular. Os nós dessa lista são do tipo Expressao, definido como o tipo estruturado expressao descrito a seguir: struct expressao char descricao[81]; struct expressao *prox, *ant; typedef struct expressao Expressao; A referida lista é mantida ordenada por uma função que determina o ranking de consultas das expressões da forma descrita a seguir. Cada vez que uma expressão é consultada, se ela não consta na lista, ela é acrescentada ao final da lista. Por outro lado, se ela é encontrada, ela deve ganhar uma posição na lista, ou seja, deve trocar de posição com o nó imediatamente a sua frente. A função retorna a posição final do nó que contém a expressão. Por exemplo, considerando a figura acima, uma consulta à expressão iphone 3G causaria a alocação dinâmica de uma nova variável Expressao, que teria o campo descricao preenchido com a expressão procurada. Essa variável seria inserida no final da lista e a função retornaria o valor 4. Uma consulta à expressão Harry Potter causaria a troca de posição entre o segundo e o terceiro nó da lista e o valor de retorno seria 2. Uma consulta à expressão Britney Spears causaria a troca de posição entre o primeiro e o segundo nó da lista (o que exigiria a atualização do valor do ponteiro da lista) e o valor de retorno seria 1. Escreva, em C, a função descrita. A função deve receber como parâmetros um ponteiro para o início da lista e uma expressão que é a cadeira de caracteres que se deseja buscar. O retorno desta função deve ser um valor inteiro que representa a posição na lista do nó que contém a expressão após a reordenação, conforme foi descrito.