Agosto
Exercício 1: Um conjunto de inteiros pode ser armazenado
em uma lista ligada ordenada. Escreva uma função uniao(apont
p, apont q) que recebe dois conjuntos (o apontador da lista
ligada que contém cada um dos conjuntos) e devolve a união destes
dois conjuntos (ou seja, o apontador da lista que contém a união
dos dois conjuntos). Os conjuntos dados serão destruídos no
processo, pois a união será composta pelas células das listas
dadas. Observe que cada elemento de um conjunto deve aparecer
uma única vez na lista ligada que representa o conjunto, e os
elementos devem aparecer em ordem, como nas listas dadas.
Exercício 2: Usando a mesma representação de conjuntos
acima, escreva uma função intersecao(apont p, apont q)
que recebe dois conjuntos e devolve a interseção destes
conjuntos. Os conjuntos dados serão destruídos no processo.
Lembre-se sempre de liberar toda célula que você não precisa
mais.
Exercício 3: Escreva uma função ordena(apont p)
que recebe uma lista ligada com cabeça de lista e rearranja a
lista, devolvendo-a com seus elementos em ordem não-decrescente
do valor da chave. Você pode apenas alterar os apontadores das
células, mas não nos valores guardados nelas.