Pagini recente » Cod sursa (job #2581192) | Cod sursa (job #2813953) | Cod sursa (job #1891232) | Cod sursa (job #763440) | Cod sursa (job #1709672)
#include <stdio.h>
using namespace std;
#define MOD 666013
int N;
struct nod
{
int valoare;
nod *next;
};
nod *H[MOD];
int cautare(int x)
{
nod *p;
int r;
r = x%MOD;
for (p = H[r]; p != NULL; p = p->next)
{
if (p->valoare == x)
return 1;
}
return 0;
}
void inserare(int x)
{
int r=cautare(x);
nod *p;
if (r == 0)
{
p = new nod;
p->valoare = x;
p->next = H[x%MOD];
H[x%MOD] = p;
}
}
void stergere(int x)
{
int r = cautare(x);
int v=x%MOD;
nod *p,*rr,*q;
if (r == 1)
{
if (H[v]->valoare == x)
{
p = H[v];
H[v] = H[v]->next;
delete p;
}
else
{
for (p = H[v]; p->next != NULL; p = p->next)
{
if (p->next->valoare == x)
{
q = p->next;
rr = q->next;
p->next = rr;
delete q;
break;
}
}
}
}
}
int main()
{
int op, x;
freopen("hashuri.in", "r", stdin);
freopen("hashuri.out", "w", stdout);
for (scanf("%d", &N); N; --N)
{
scanf("%d %d", &op, &x);
if (op == 1) // inserare
{
inserare(x);
continue;
}
if (op == 2) // stergere
{
stergere(x);
continue;
}
printf("%d\n", cautare(x));
}
return 0;
}