Pagini recente » Cod sursa (job #16953) | Cod sursa (job #30924) | Cod sursa (job #55574) | Cod sursa (job #187708) | Cod sursa (job #239730)
Cod sursa(job #239730)
#include<fstream>
using namespace std;
const int M = 666013;
typedef struct List* Lista;
struct List
{
long long Key;
Lista Next;
};
typedef Lista Hash[M];
Hash H;
long long i,N,op;
long long x;
ifstream f ("hashuri.in");
ofstream g ("hashuri.out");
void initH(Hash H)
{
for(i=0;i<M;H[i++]=NULL);
}
int hash(long long p)
{
return p%9973;
}
void addH(Hash H, long long P)
{
Lista L=new List;
L->Key=P;
L->Next=H[hash(P)];
H[hash(P)]=L;
}
int searchH(Hash H, long long P)
{
Lista L;
for(L=H[hash(P)];L&&L->Key!=P;L=L->Next);
return L!=NULL;
}
void deleteH(Hash H, long long P)
{
Lista L;
for(L=H[hash(P)];L&&L->Key!=P;L=L->Next);
if(!L) return;
if(H[hash(P)]==P)
{
L=H[Hash(P)];
H[hash(P)]=H[hash(P)]->Next;
delete L;
}
else
{
Lista L2 = L;
L=L->Next;
delete L2;
}
}
int main()
{
initH(H);
f>>N;
for(i=0;i<N;i++)
{
f>>op>>x;
switch(op)
{
case 1: addH(H, x); break;
case 2: deleteH(H, x); break;
case 3: g<<searchH(H, x)<<"\n"; break;
}
}
f.close();
g.close();
return 0;
}