Salve,ho un problema con un esercizio sulle liste in C. Premetto che sono alle prime armi e anche se capisco come in teoria dovrebbero funzionare non riesco a scrivere il programma.
L'esercizio è il seguente:
La mia idea era quella di scansionare la lista facendo sommare i valori.Tipo come se fosse un array,avere due puntatori che puntano rispettivamente uno al primo e l'altro al secondo elemento e sommarli.Poi confrontare la somma con il valore k. se la somma<k fare una specie di chiamata ricorsiva in cui alla somma aggiungo il prossimo elemento finché non si raggiunge il valore k. Il problema è che non so come far capire al programma di salvare i precedenti valori e e poi come eliminarli una volta trovata la sequenza."Sia data una struttura
che rappresenta un elemento di una lista di interi.codice:typedef struct elemento { int val; struct elemento *next } item;
Si scriva una procedura
che data una lista lis di interi positivi e un intero positivo k, cerca all'interno di list la prima sequenza di elementi consecutivi la cui somma sia esattamente k, e elimina tali elementi dalla lista. La funzione deve restituire un puntatore al primo elemento della lista così modificata.codice:lista *SeekAndDestroy(lista *l, int k)
Avevo anche pensato a salvare questi interi in una nuova lista(esempio list current) e poi magari attraverso la funzione ricerca cercare nella vecchia lista gli elementi della list current ed eliminarli,ma come ho detto mi blocco nel scrivere in concreto il programma.
Grazie