64 lines
1.4 KiB
Java
64 lines
1.4 KiB
Java
|
|
public class Hash {
|
|
int tabela[];
|
|
int m1, m2, m, reserva;
|
|
final int NULO = -1;
|
|
|
|
public Hash() {
|
|
this(13, 7);
|
|
}
|
|
|
|
public Hash(int m1, int m2) {
|
|
this.m1 = m1;
|
|
this.m2 = m2;
|
|
this.m = m1 + m2;
|
|
this.tabela = new int[this.m];
|
|
for (int i = 0; i < m1; i++) {
|
|
tabela[i] = NULO;
|
|
}
|
|
reserva = 0;
|
|
}
|
|
|
|
public int h(int elemento) {
|
|
return elemento % m1;
|
|
}
|
|
|
|
public boolean inserir(int elemento) {
|
|
boolean resp = false;
|
|
if (elemento != NULO) {
|
|
int pos = h(elemento);
|
|
if (tabela[pos] == NULO) {
|
|
tabela[pos] = elemento;
|
|
resp = true;
|
|
} else if (reserva < m2) {
|
|
tabela[m1 + reserva] = elemento;
|
|
reserva++;
|
|
resp = true;
|
|
}
|
|
}
|
|
return resp;
|
|
}
|
|
|
|
public boolean pesquisar(int elemento) {
|
|
boolean resp = false;
|
|
int pos = h(elemento);
|
|
if (tabela[pos] == elemento) {
|
|
resp = true;
|
|
} else if (tabela[pos] != NULO) {
|
|
for (int i = 0; i < reserva; i++) {
|
|
if (tabela[m1 + i] == elemento) {
|
|
resp = true;
|
|
i = reserva;
|
|
}
|
|
}
|
|
}
|
|
return resp;
|
|
}
|
|
|
|
boolean remover(int elemento) {
|
|
boolean resp = false;
|
|
// ...
|
|
return resp;
|
|
}
|
|
}
|