PER LA STRUTTURA DATI LIST IMPLEMENTARE LE SEGUENTI OPERAZIONI: 1) TNode *list_search(TList list, TInfo *info); void list_delete(TList *list, TInfo *info); CHE, RISPETTIVAMENTE, CERCANO UN ELEMENTO IN UNA LISTA ORDINATA E CANCELLANO UN ELEMENTO DA UNA LISTA ORDINATA 2) void list_reverse(TList *list); CHE DATA UNA LISTA ORDINATA RESTITUISCA GLI ELEMENTI IN ORDINE INVERSO (DAL PIł GRANDE AL PIł PICCOLO). LA FUNZIONE NON DEVE CREARE O DISTRUGGERE NODI. 3) int list_insert_unordered(TList *list, TInfo *info); TNode *list_search_unordered(TList *list, TInfo *info); void list_delete_unordered(TList *list, TInfo *info); CHE, RISPETTIVAMENTE, INSERISCONO UN NUOVO ELEMENTO NELLA LISTA SENZA CURARSI DI MANTENERE LA LISTA ORDINATA, CERCANO UN ELEMENTO IN UNA LISTA NON ORDINATA, CANCELLANO UNA OCCORRENZA DELL'ELEMENTO IN UNA LISTA NON ORDINATA. 4) TList *list_copy(TList list); CHE RESTITUISCE UNA COPIA DI list. 5) int list_insert_at_index(TList *list, TInfo *info, int k); void list_delete_at_index(TList *list, int k); CHE, RISPETTIVAMENTE, INSERISCONO E CANCELLANO L'ELEMENTO DOPO IL k-ESIMO ELEMENTO DELLA LISTA 6) int list_insert_at_node(TList *list, TInfo *info, TNode *prev); void list_delete_at_node(TList *list, TNode *prev); CHE, RISPETTIVAMENTE, INSERISCONO E CANCELLANO L'ELEMENTO DOPO IL NODO prev