Go to the source code of this file.
◆ freeBucket()
◆ insertBucket()
Definition at line 163 of file bucket.c.
165
166
167
168
170 { fprintf(stderr, "\nError in function insertBucket\n"
171 " key %d too large/small for bucket\n", k);
173 }
175 { fprintf(stderr, "\nError in function insertBucket\n"
176 " item %d too large for bucket (maxitem is %d)\n", item,
179 }
181 { fprintf(stderr, "\nError in function insertBucket\n"
182 " item %d already in bucket\n", item);
184 }
185
186
187
188
191
192
193
194
197 bucket->
key[item] = k;
198
199
200
201
202 nextitem = bucket->
bin[s];
203 if (nextitem != -1)
204 bucket->
last[nextitem] = item;
205 bucket->
next[item] = nextitem;
206 bucket->
last[item] = -1;
207 bucket->
bin[s] = item;
208}
◆ minBucket()
Definition at line 117 of file bucket.c.
120
127
128 if (nobj > 0)
129 {
130
131
132 while (bin[minbin] == -1) minbin++;
134 bestitem = bin[minbin];
135 bestkey = minbin;
136
137
138
139
140
141 if ((minbin == 0) || (minbin == maxbin))
142 { item =
next[bestitem];
143 while (item != -1)
144 { if (key[item] < bestkey)
145 { bestitem = item;
146 bestkey = key[item];
147 }
149 }
150 }
151
152
153
154 return(bestitem);
155 }
156 else return(-1);
157}
◆ newBucket()
Definition at line 56 of file bucket.c.
58
64
70
71 return(bucket);
72}
#define mymalloc(ptr, nr, type)
integer, dimension(:), allocatable offset
◆ removeBucket()
Definition at line 214 of file bucket.c.
216
217
218
219
221 { fprintf(stderr, "\nError in function removeBucket\n"
222 " item %d is not in bucket\n", item);
224 }
225
226
227
228
229 nextitem = bucket->
next[item];
230 lastitem = bucket->
last[item];
231 if (nextitem != -1)
232 bucket->
last[nextitem] = lastitem;
233 if (lastitem != -1)
234 bucket->
next[lastitem] = nextitem;
235 else
238 bucket->
bin[s] = nextitem;
239 }
240
241
242
243
246}
◆ setupBucket()
Definition at line 91 of file bucket.c.
94
95 if (offset < 0)
96 { fprintf(stderr, "\nError in function setupBucket\n"
97 " offset must be >= 0\n");
99 }
100
101 bucket =
newBucket(maxbin, maxitem, offset);
102
103 for (i = 0; i <= maxbin; i++)
105 for (u = 0; u <= maxitem; u++)
106 { bucket->
next[u] = bucket->
last[u] = -1;
108 }
109
110 return(bucket);
111}
bucket_t * newBucket(PORD_INT maxbin, PORD_INT maxitem, PORD_INT offset)