Exercícios
Considere uma lista simplesmente ligada de strings que obedece à seguinte definição:
typedef struct node *link;
typedef char* Item;
struct node {
Item item;
link next;
};
1. Implemente as seguintes funções para manipulação de items:
a) Item newItem (Item i);
A função newItem devolve um novo Item que é uma cópia do argumento.
b) int itemCompare (Item i1, Item i2);
A função itemCompare devolve 0 se os items são iguais. Devolve um valor positivo se i1 > i2 ou um valor negativo caso contrário.
c) void showItem (Item i);
A função showItem mostra o item i no standard output.
d) void deleteItem (Item i);
Liberta a memória associada ao item.
2. Implemente a função link insertSorted(link head, Item i) que insere o Item i de forma ordenada na lista cujo primeiro elemento é apontado por head. A função deverá devolver o primeiro elemento da lista. A ordenação deverá ser crescente. Use as funções do exercício anterior.
3. Implemente a função void show(link head) que mostra no standard output o conteúdo da lista cujo primeiro elemento é apontado por head. Use as funções do exercício 1.
4. Implemente a função int search(link head, Item i) que devolve 1 se o item i estiver na lista ou 0 caso contrário.
5. Implemente a função link remove(link head, Item i) que remove da lista a primeira ocorrência do Item i.
6. Faça um programa que insira numa lista todos os argumentos fornecidos na linha de comandos, e que podem ser obtidos através da tabela argv. De seguida, mostre o conteúdo da lista.
7. Defina que o tipo Item é um inteiro. Modifique as funções do exercício 1 de acordo com a nova definição e resolva os exercícios 2 a 5.