public class BBag extends BSet {
public BBag(int size) {
super(size);
count = new int[size];
}
public void add(int el) {
int i;
for (i=0; (i<nelt)&&(elts[i]!=el); ++i);
if(nelt < nmax) {
if(i==nelt) {
elts[i]=el;
count[i]=1;
nelt++;
}
else
count[i]++;
}
}
public void add_many(int el, int num) {
int i;
for (i=0; i<num; ++i)
add(el);
}
public void remove(int el) {
int i;
for (i=0; (i<nelt)&&(elts[i]!=el);++i);
if (i<nelt) {
if (count[i]>1)
count[i]--;
else {
for(i++; i<nelt; i++) {
elts[i-1]=elts[i];
count[i-1]=count[i];
}
nelt--;
}
}
}
public void remove_many(int el, int num) {
int i;
for (i=0; i<num; ++i)
remove(el);
}
public int size() {
int sz = 0;
int i;
for (i = 0; i<nelt; ++i)
sz = sz + count[i];
return sz;
}
public int number(int el) {
if (!super.has(el)) return 0;
else {
int i;
for (i=0; elts[i]!=el; ++i);
return count[i];
}
}
private int count[];
}