Pagini recente » Cod sursa (job #2795651) | Cod sursa (job #2542700) | Cod sursa (job #1080750) | Cod sursa (job #2326933) | Cod sursa (job #1989057)
#include <iostream>
#include <cstdio>
using namespace std;
const int PRIME_NUMBER=93479;
int h(int numToHash)
{
return numToHash%PRIME_NUMBER;
}
struct nod
{
int val;
nod* link;
public:
nod()
{
val=0;
link=NULL;
}
};
nod* lista[PRIME_NUMBER+2];
void adaugare(int nr)
{
nod*placeToInset=lista[h(nr)]->link;
while(placeToInset->val!=0&&placeToInset->val!=nr)
{
placeToInset=placeToInset->link;
}
if(placeToInset->val==nr)
return;
placeToInset->val=nr;
placeToInset->link=new nod();
}
void stergere(int nr)
{
nod*placeToInset=lista[h(nr)]->link;
nod*aux=lista[h(nr)];
while(placeToInset->val!=nr&&placeToInset->link!=NULL)
{
aux=aux->link;
placeToInset=placeToInset->link;
}
if(placeToInset->val==nr)
{
aux->link=placeToInset->link;
delete placeToInset;
}
}
bool cautare(int nr)
{
nod*placeToInset=lista[h(nr)]->link;
while(placeToInset->val!=nr&&placeToInset->link!=NULL)
{
placeToInset=placeToInset->link;
}
if(placeToInset->val==nr)
return true;
return false;
}
int main()
{
freopen("hashuri.in","r",stdin);
freopen("hashuri.out","w",stdout);
for(int i=0;i<PRIME_NUMBER+2;i++)
{
lista[i]=new nod();
lista[i]->link=new nod();
}
int n,op,nr;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d%d",&op,&nr);
if(op==1)
{
adaugare(nr);
continue;
}
if(op==2)
{
stergere(nr);
continue;
}
if(op==3)
{
printf("%d\n",cautare(nr));
}
}
return 0;
}