Exercícios

  1. Os ficheiros ORD.h e ORD.c, fornecidos em anexo, constituem o ADT de uma estrutura de dados, que permite inserir ordenadamente elementos, através da função ORDinsert() e obter o primeiro elemento (removendo-o), através da função ORDfirst(). Analise os ficheiros em causa. O ficheiro teste.c, fornecido em anexo, permite lêr da entrada um conjunto de números inteiros ou strings e escrevê-lo na saída de forma ordenada.
    • Implemente um ficheiro Item.h tal que, sem efectuar qualquer modificação nos ficheiros fornecidos, consiga efectuar a leitura da entrada de um conjunto de números inteiros e a escrita dos mesmos na saída de forma ordenada. Deverá compilar o seu programa com o seguinte comando: gcc -o teste teste.c ORD.c
    • Repita o procedimento anterior, mas para manipular strings, em vez de números inteiros, considerando que a ordenação é efectuada pela função strcmp().
  2. Os ficheiros PQ.h e PQ.c, fornecidos em anexo, constituem o ADT fila de prioridade estudado nas aulas teóricas. Utilize este ADT para implementar um programa que lê um conjunto de palavras do standard input e as imprime no standard output por ordem crescente. Note que para utilizar o ADT terá de criar um ficheiro Item.h que defina o tipo Item e implemente as macros less e exch.
  3. Implemente um ADT de ordem 0, que permite guardar elementos e preserva a ordem de inserção dos elementos. A interface do ADT é constituída pelas seguintes funções:
    • void XYinit(int n), inicializa as estruturas de dados, possibilitando guardar até n elementos;
    • void XYinsert(Item e), insere um elemento e;
    • void XYdelete(int i), apaga o elemento de ordem i;
    • int XYcount(), devolve o número de elementos;
    • Item XYgetmax(), devolve o maior elemento;
    • Item XYgetmin(), devolve o menor elemento;
    • Item XYgetidx(int i), devolve o elemento de ordem i;
  4. Transforme os ADTs dos exercícios anteriores em ADTs de primeira ordem.

Attachments