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.