Exercise List

Upcase

Private

2023-07-29

Define the function `void upcase(char *s)` that converts every lowercase character in a string to **uppercase**. This function must be recursive and should not use the `toupper()` function from the `<ctype.h>` header file.

Queue

Private

2023-05-01

Relembra o tipo `LInt`, usado para representar listas ligadas de inteiros. ```c typedef struct slist { int valor; struct slist * prox; } * LInt; ``` ```c LInt newLInt (int x, LInt xs) { LInt r = malloc (sizeof(struct slist)); if (r!=NULL) { r->valor = x; r->prox = xs; } return r; } ``` Este tipo foi usado para implementar uma `Queue`. De forma a tornar as operações de adição/remoção de um elemento eficientes (e com uma eficácia que não depende do tamanho da queue), é costume usar dois endereços: um para cada uma das extremidades da lista. A inserção é feita no final da lista e a remoção do início. ```c typedef struct { LInt inicio,fim; } Queue; ``` Apresenta definições das funções habituais sobre Queues: - `void initQueue (Queue *q);` - `int QisEmpty (Queue q);` - `int enqueue (Queue *q, int x);` - `int dequeue (Queue *q, int *x);` - `int front (Queue q, int *x);`

acrescenta

Private

2023-04-29

Considera o seguinte tipo, utilizado para definir uma lista que determina a frequência de palavras num texto. ```c typedef struct celula { char *palavra; int ocorr; struct celula * prox; } * Palavras; ``` Define a função `Palavras acrescenta(Palavras l, char *p)` que regista mais uma ocorrência da palavra `p`. Se a palavra já existir, o número de ocorrências deve ser incrementado. No outro caso deve ser inserida uma nova célula. A inserção de uma nova célula pode ser feita no início da lista ou ordenadamente, assumindo que a lista está armazenada por ordem alfabética.

Hello world

Private

2023-04-27

Define the function `void helloworld()` that prints the sentence "Hello World!" to the standard output.