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 lista duplamente ligada de itens que obedece à seguinte definição:
typedef struct node *link;
struct node {
Item item;
link next;
link prev;
};
typedef struct {
link first;
link last;
} list;
1. Implemente a função list* create() que cria uma nova lista.
2. Implemente a função void insertBegin(list* l, Item i) que insere o Item i no início da lista.
3. Implemente a função void insertEnd(list* l, Item i) que insere o Item i no fim da lista.
4. Implemente a função void insertSorted(list* l, 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(list* l) que mostra no standard output o conteúdo da lista l.
6. Implemente a função void clear(list* l) que liberta toda a memória associada com a lista l. Use a ferramenta valgrind para verificar a correcção da função.
7. Implemente a função void removeFirst(list* l, Item i) que remove da lista a primeira ocorrência do Item i.
8. Implemente a função void removeAll(list* l, Item i) que remove da lista todas as ocorrências do Item i.