CI067 - Oficina de Computação
Exercícios # 07
2º semestre 2013

Bibliotecas, Matrizes, Listas encadeadas, Pilhas e Filas


PARTE I - Atividades em Laboratório

 
  1. (liblist)Suponha uma lista encadeada $ L$ com elementos do tipo int. Defina um módulo de biblioteca com uma estrutura de dados adequada, e funções para inserir, remover e buscar um elemento de L identificado por uma chave. As funções devem conter mecanismos próprios para um reuso econômico de memória.

 Solução.

 
  1. (libqueue)Suponha uma fila $ Q$ com elementos do tipo char * que é implementada como uma lista encadeada. Defina um módulo de biblioteca com uma estrutura de dados adequada, funções para inserir e extrair um elemento de Q, e uma funcão que testa se a fila está vazia ou não. As funções devem conter mecanismos próprios para um reuso econômico de memória.

PARTE II - Exercícios

 
  1. (libstack)Suponha uma pilha $ P$ com elementos do tipo float que é implementada como um vetor unidimensional. Defina um módulo de biblioteca com uma estrutura de dados adequada, funções para inserir e extrair um elemento de Q, e uma funcão que testa se a pilha está vazia ou não. As funções devem conter mecanismos próprios para um reuso econômico de memória.

 
  1. (libmatriz)Suponha uma matriz $ M$ com elementos do tipo float, com $ L$ linhas e $ C$ colunas que podem variar dinamicamente. Defina um módulo de biblioteca com uma estrutura de dados adequada, funções para criar, aumentar e diminuir as dimensões de uma matriz 1, destruir a matriz, recuperar uma cópia de uma região da matriz, sobrescrever uma região da matriz com o conteúdo de outra matriz, e preencher uma região da matriz com um valor específico. As funções devem conter mecanismos próprios para um reuso econômico de memória.

 
  1. (libgen)Modifique as soluções dos exercícios 1, 2, 3 e , 4 de forma que lidem com tipos genéricos, isto é, deve ser possível criar as devidas estruturas com itens de dados de qualquer tipo.

 

 

Use a biblioteca definida no exercício 5 para resolver os exercícios abaixo.

 
  1. (matricula)Faça um programa que controle a matrícula de alunos em disciplinas. Cada aluno tem um número de identificação ID ( $ 1 \leqslant ID \leqslant 100.000$) e um nome (máximo de 100 caracteres). Cada matrícula contém o $ ID$ do aluno, o código da disciplina (5 caracteres), e as duas notas de avaliação $ P1$ e $ P2$ ( $ 0,0 \leqslant P1, P2 \leqslant 10,0$) naquela disciplina.
    O programa deve permitir a inserção e remoção de alunos e matrículas, bem como a inserção e alteração de notas. Um aluno somente pode ser removido se não estiver matriculado em nenhuma disciplina. A remoção e alteração de notas se fazem com a indicação do $ ID$ de um aluno e do código da disciplina. O usuário deve ser capaz de consultar a lista de matrículas completa, por disciplina ou por aluno.

 
  1. (matricord)Refaça o exercício 6 para que as inserções sejam feitas de forma a manter os alunos em ordem de número de identificação e as matrículas em ordem de código de disciplina e, dentro de cada código, em ordem de número do aluno.



Notas de rodapé

... matriz1
sem perder os elementos da matriz pertencentes ao espaço definido pelas novas dimensões


Armando Luiz Nicolini Delgado
2013-08-27