Salve a tutti,non riesco a creare un algoritmo a cui ho pensato quindi non si tratta di un problema relativo ai meccanismi del C ,però attualmente uso questo linguaggio per programmare.Vengo al dunque:
Ho una struttura dati dinamica del tipo linked lista ,doppiamente linkata (così la lista si può scorrere dall'inizio fino alla fine e viceversa) in cui i campi info sono di tipo intero e possono contenere il numero 0 oppure 1,quindi le info della linked lista rappresentano un numero binario,ad esempio :
1<-->1<-->0<-->1
Avevo pensato di sviluppare una funzione RICORSIVA (la versione iterativa è già pronta e funzionante) che mi permettesse di sommare 1 al numero binario che rapressenta la lista; prendendo l'esempio dal numero di sopra e sommandoci 1,si ha :
1<-->1<-->1<-->0
(NB: nel caso in cui il numero ad esempio sia 1<-->1<-->1 ,sommando 1 ovviamente diventa 1<-->0<-->0<-->0).
La cosa importante e che la funzione abbia soltanto due parametri ,ad esempio il prototipo:
Esempio MAIN:codice:void somma_binary(tipo_nodo_lista inizio_lista,int r);
Ho cercato in molti modi di realizzare questo algoritmo ma la difficoltà sta nel fatto che una volta che si arriva alla fine della lista e si somma 1 alla cifra presente nell'ultima posizione,dopo per ritornare all'inizio a ritroso con eventuale resto la cosa diventa complicata.codice:. . . r=1; somma_binary(inizio_lista,r); . . .
Grazie in anticipo!