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 (char* s);
A função newItem devolve um novo Item contendo a informação passada como argumento.
b) Crie uma função responsável por criar um novo nodo de uma lista ligada, contendo o Item i e devolvendo o endereço do tipo link.
link newNode (Item i);
c) 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.
d) void showItem (Item i);
A função showItem mostra o item i no standard output.
e) 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.
Nota: Se tiver dificuldade na resolução destes exercícios, tome os exemplos disponibilizados nos slides das aulas teóricas (ou os exemplos disponibilizados aqui) como ponto de partida.