Originariamente inviato da Scara95
codice:
somma_binary(inizio_lista, r) {
  if (n == 0)
    return;
  if(inizio_lista->left == NULL) {
    inizio_lista->left = allocazione_memoria;
    inizio_lista->left->right = inizio_lista;
    inizio_lista->left->left = NULL;
    inizio_lista->left->info = 0;
  }
  l->info += r & 1;
  if(l->info & 2)
   somma_binary(l->left, 1);
  l->info &= 1;
  somma_binary(l->left, r<<1);
}
Questo dovrebbe funzionare anche se è piuttosto inefficente.
Però puoi sommare solo numeri positivi, e non considera il caso in cui passi all'inizio un NULL, inoltre avrai sempre uno 0 in testa...
Va richiamata con l'ultimo elemento...
E' più semplice implementare una funzione con più parametri e creare una macro che la richiami
Ciao,anzitutto grazie per la risposta ed il tempo che ci hai perso però purtroppo è una versione estremamente semplificata e incompleta.Per quanto riguarda i parametri due sono più che sufficienti,ammenochè qualcuno non mi riesca a dimostrare che è impossibile (lo escludo .
Comunque colgo l'occasione andando un attimo OT,essendo un neofita del C ,questo tipo di istruzioni cosa fanno ??
codice:
1)l->info += r & 1
2)l->info &= 1;
3)r<<1
Per quanto riguarda l'algoritmo ho provato ad abbozzare qualcosa,ma il problema resta sempre come scorrerre liberamente la lista dall'inizio alla fine e viceversa,non riesco in nessuna maniera xD.