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"]