Pagini recente » Cod sursa (job #255759) | Cod sursa (job #2317127) | Cod sursa (job #2653002) | Cod sursa (job #103781) | Cod sursa (job #482754)
Cod sursa(job #482754)
#include <cstdio>
const int MOD = 666013;
struct nod {
int v;
nod *next;
} *HASH[MOD + 1];
int n, tip, x;
void adauga (nod*&, int), sterge (nod*&, int), cauta (nod*, int);
int main () {
freopen ("hashuri.in", "r", stdin);
freopen ("hashuri.out", "w", stdout);
scanf ("%d", &n);
while (n--) {
scanf ("%d %d", &tip, &x);
switch (tip) {
case 1: adauga (HASH[x % MOD], x); break;
case 2: sterge (HASH[x % MOD], x); break;
case 3: cauta (HASH[x % MOD], x); break;
}
}
return 0;
}
void adauga (nod *&H, int x) {
nod *p;
p = new nod;
p -> v = x, p -> next = H;
H = p;
}
void sterge (nod *&H, int x) {
nod *p, *aux;
for (p = H; p != NULL; p = p -> next)
if (p -> v == x) {
if (p == H) {
aux = H, H = H -> next;
delete aux;
}
else {
aux = p, p = p -> next;
delete aux;
}
return;
}
}
void cauta (nod *H, int x) {
nod *p;
for (p = H; p != NULL; p = p -> next)
if (p -> v == x) {
printf ("1\n");
return;
}
printf ("0\n");
}