200 final
This commit is contained in:
@@ -11,7 +11,6 @@ TablaHash::TablaHash() {
|
||||
TablaHash::~TablaHash() {
|
||||
}
|
||||
|
||||
// eeeeeeeeeeeeeeeeeeeh
|
||||
void TablaHash::insertar(Cuac nuevo) {
|
||||
int pos = h(nuevo.usuario);
|
||||
list<Cuac>::iterator it = lista[pos].begin();
|
||||
@@ -25,38 +24,34 @@ void TablaHash::insertar(Cuac nuevo) {
|
||||
nElem++;
|
||||
}
|
||||
|
||||
// eeeeeeeeeeeeeeeeh
|
||||
// hay que consultar de más reciente a más antiguo
|
||||
void TablaHash::consultar(string clave) {
|
||||
int pos = h(clave);
|
||||
int i = 0;
|
||||
for (list<Cuac>::iterator it = lista[pos].begin(); it != lista[pos].end(); it++) {
|
||||
Cuac c = *it;
|
||||
i++;
|
||||
cout << i << ". " << c.usuario << " ";
|
||||
c.fecha.escribir();
|
||||
cout << '\n' << " " << c.mensaje << endl;
|
||||
if (c.usuario == clave) {
|
||||
i++;
|
||||
cout << i << ". " << c.usuario << " ";
|
||||
c.fecha.escribir();
|
||||
cout << '\n' << " " << c.mensaje << endl;
|
||||
}
|
||||
}
|
||||
cout << "Total: " << i << " cuac" << endl;
|
||||
|
||||
}
|
||||
|
||||
// probamos suma posicional
|
||||
// necesita redispersión
|
||||
// probamos lineal
|
||||
// 19s
|
||||
// probamos suma posicional por trozos
|
||||
// ruina
|
||||
// es disp. abierta, no necesita redispersión
|
||||
// 19s a superar
|
||||
unsigned int TablaHash::h(string clave) {
|
||||
unsigned int res = 0;
|
||||
for (int i = 0; i < clave.length(); i++) {
|
||||
for (int i = 0; i < (int) clave.length(); i++) {
|
||||
res = 67 * res + clave[i];
|
||||
}
|
||||
|
||||
while (!lista[res % M].empty()) {
|
||||
Cuac c = lista[res % M].front();
|
||||
if (clave != c.usuario) {
|
||||
res = res + 1;
|
||||
} else {
|
||||
return res % M;
|
||||
}
|
||||
}
|
||||
return res % M;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user