typedef struct SE {
char * name; //stringa allocata dinamicamente
struct SE *next;
} SE, *SL;
Scrivere una funzione SL rot(SL L, int k) che ruota a sinistra di k posizioni
la lista L e ritorna il puntatore alla lista ruotata. Se k è maggiore
della lunghezza della lista, la funzione ritorna NULL. Ad esempio,
se k = 3 e la lista di input è "Aria"→"Bolla"→"Cielo"→"Duna"→"Eco",
allora la funzione la modifica così
"Duna"→"Eco"→"Aria"→"Bolla"→"Cielo".
int maxpref(char *pre, char *txt)
che presi in input i nomi di due file di testo ritorna la lunghezza del più lungo
prefisso del file pre che è contenuto nel file txt. Un prefisso è
una qualsiasi sottostringa (sequenza di caratteri consecutivi) che inizia all'inizio del file.
Ad esempio, se il contenuto del file pre è
prefisso non significa fissoe il contenuto del file
txt è
il prefisso non segna l'inizioallora la funzione ritorna 14 (il prefisso più lungo è
"prefisso non s").
typedef struct Task {
char name[20]; //contiene stringa di lunghezza < 20
int hh; //ore: 0 - 23
int mm; //minuti: 0 - 59
int ss; //secondi: 0 - 59
struct Task *next;
} Task, *TList;
Scrivere una funzione char **tasks(TList *pL, int hh, int mm, int ss, int *dT)
che elimina dalla lista *pL tutti i Task che hanno l'orario antecedente all'orario di input
(hh,mm,ss), assumendo che tutti gli orari si riferiscano allo stesso giorno. La funzione restituisce in *pL
il puntatore alla lista modificata, ritorna in un array allocato dinamicamente i nomi (contenuto dei campi name)
dei Task eliminati e in *dT restituisce il numero di tali Task. La memoria dei
Task eliminati deve essere rilasciata. Ad esempio, se la lista è
{"T7",7,34,40}→{"T3",14,21,7}→{"T5",5,56,58}→{"T12",7,34,41}
e l'orario di input è (7,34,41), allora la lista modificata e l'array ritornato sono i seguenti:
{"T3",14,21,7}→{"T12",7,34,41} ["T7", "T5"]