diff options
Diffstat (limited to 'set_bitsets.c')
-rw-r--r-- | set_bitsets.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/set_bitsets.c b/set_bitsets.c index 5578620..bbfd095 100644 --- a/set_bitsets.c +++ b/set_bitsets.c @@ -160,14 +160,16 @@ int elt_of_set(const set s){ } int elt_of_set_heur(const set s, int h){ - int N=nbCells(s.N), i; + int N=nbCells(s.N), i, cell; if(s.tab[h/SCOD]>>(h%SCOD) !=0) return h + dyadic_val(s.tab[h/SCOD]>>(h%SCOD)) ; - for(i=0; i<N; i++) - if(s.tab[(i+h/SCOD+1)%N] != 0) - return i*SCOD+dyadic_val(s.tab[(i+h/SCOD+1)%N]); + for(i=0; i<N; i++) { + cell = (i + h/SCOD + 1) % N; + if(s.tab[cell] != 0) + return cell*SCOD + dyadic_val(s.tab[cell]); + } printf("No element in an empty set!\n"); dump_set(s); |