Go to the source code of this file.
Classes | |
| struct | combinations |
Functions | |
| combinations * | new_combinations (int numbers[], int n, int r) |
| int | incr (int *x, int n, int r) |
| int * | next_combination (combinations *bob) |
| void | close_combinations (combinations *bob) |
|
|
Definition at line 108 of file comb.c. References combinations::curr, combinations::next, combinations::numbers, and combinations::x. Referenced by multiplex(). 00112 {
00113 if (bob != NULL) {
00114 if (bob->numbers != NULL)
00115 free(bob->numbers);
00116 if (bob->curr != NULL)
00117 free(bob->curr);
00118 if (bob->next != NULL)
00119 free(bob->next);
00120 if (bob->x != NULL)
00121 free(bob->x);
00122 free(bob);
00123 }
00124 }
|
|
||||||||||||||||
|
Referenced by incr(), and next_combination(). |
|
||||||||||||||||
|
Definition at line 7 of file comb.c. References combinations::curr, error(), combinations::last, combinations::n, combinations::next, combinations::numbers, combinations::r, and combinations::x. Referenced by multiplex(). 00013 {
00014 int i;
00015 combinations *bob = (combinations *) malloc(sizeof(combinations));
00016 if (bob != NULL) {
00017 bob->n = n;
00018 bob->r = r;
00019 bob->numbers = (int *) malloc(n * sizeof(int));
00020
00021 if ((bob->numbers==NULL) && (n>0))
00022 error("new_combinations", "malloc failed..");
00023 else {
00024 for (i=0; i<n; i++)
00025 bob->numbers[i] = numbers[i];
00026 }
00027
00028 bob->curr = (int *) malloc(r * sizeof(int));
00029 bob->next = (int *) malloc(r * sizeof(int));
00030 if (((bob->curr == NULL) || (bob->next == NULL)) && (r > 0)) {
00031 error("new_combinations", "malloc failed...");
00032 }
00033 else {
00034 for (i=0; i<r; i++)
00035 bob->next[i] = i;
00036 }
00037
00038 bob->x = (int *) malloc(r * sizeof(int));
00039 if ((bob->x == NULL)&&(r>0)) {
00040 error("new_combinations", "malloc failed....");
00041 }
00042 else {
00043 for (i=0; i<r; i++)
00044 bob->x[i] = bob->numbers[i];
00045 }
00046 bob->last = 0;
00047 }
00048 else {
00049 error("new_combinations", "malloc failed.");
00050 }
00051 return (bob);
00052 }
|
|
|
Definition at line 82 of file comb.c. References combinations::curr, incr(), combinations::last, combinations::n, combinations::next, combinations::numbers, combinations::r, warn(), and combinations::x. Referenced by multiplex(). 00087 {
00088 int *this = NULL;
00089 int i;
00090 if (bob != NULL) {
00091 if (!bob->last) {
00092 for (i=0; i<bob->r; i++) {
00093 bob->curr[i] = bob->next[i];
00094 bob->x[i] = bob->numbers[bob->curr[i]];
00095 }
00096 this = bob->x;
00097 if (!incr(bob->next, bob->n, bob->r))
00098 bob->last = 1;
00099 }
00100 }
00101 else {
00102 warn("next_combination", "invalid combinations.");
00103 }
00104 return (this);
00105 }
|
1.3.9.1