Exercícios
Considere a definição de Item da aula passada e as seguintes funções:
typedef char* Item;
Item newItem (Item i);
int itemCompare (Item i1, Item i2);
void showItem (Item i);
void deleteItem (Item i);
Considere ainda uma fila de espera (ou queue), implementada através de uma lista ligada que obedece às seguintes definições (ver slides 28-34, disponíveis aqui)
typedef struct node {
Item item;
struct node* next;
}*link; /* link é um ponteiro para a struct node */
typedef struct queue{
link head; /* ponteiro para o primeiro "node" da lista */
link tail; /* ponteiro para o ultimo "node" da lista */
int size; /* numero de elementos da lista */
} *Q; /* Q é um ponteiro para esta struct queue */
1. Implemente a função Q create() que cria uma nova queue.
2. Implemente a função void insertBegin(Q q, Item i) que insere o Item i no início da lista.
3. Implemente a função void insertEnd(Q q, Item i) que insere o Item i no fim da lista.
4. Implemente a função void insertSorted(Q q, Item i) que insere o Item i de forma ordenada na lista l. A ordenação da lista deverá ser crescente.
5. Implemente a função void show(Q q) que mostra no standard output o conteúdo de q.
6. Implemente a função void clear(Q q) que liberta toda a memória associada com a lista q. Use a ferramenta valgrind para verificar a correcção da função.
7. Implemente a função void removeFirst(Q q, Item i) que remove da lista a primeira ocorrência do Item i.
8. Implemente a função void removeAll(Q q, Item i) que remove da lista todas as ocorrências do Item i.