Pagini recente » Cod sursa (job #44163) | Cod sursa (job #1359365) | Cod sursa (job #1895762) | Cod sursa (job #1802148) | Cod sursa (job #2292909)
#include <iostream>
#include <cstdlib>
#include <fstream>
using namespace std;
const int p = 1000003;
struct Nod {
Nod *next;
int info;
};
Nod** alocare()
{
Nod **v;
v = (Nod**) calloc( p, sizeof(Nod*));
return v;
}
int h ( int x)
{
return x%p;
}
void inserare ( Nod** v, int x )
{
Nod *prim ;
int poz = h(x);
for(prim = v[poz]; prim != NULL; prim = prim->next)
{
if ( prim ->info == x)
return;
}
Nod *aux = new Nod;
aux->next = NULL;
aux->info = x;
if( v[poz] == NULL )
v[poz] = aux;
else{
aux->next = v[poz] ->next;
v[poz]->next = aux;
}
}
void stergere ( Nod** v, int x)
{
Nod * prim , *pprim;
int poz = h(x);
prim = v[poz];
if( prim == NULL)
return;
if( prim->info == x)
{
v[poz] = prim->next;
delete prim;
return ;
}
for(prim = v[poz] ; prim->next != NULL; prim = prim->next)
{
if ( prim ->next->info == x)
{
pprim = prim->next;
prim ->next = prim->next->next;
delete pprim;
return ;
}
}
}
bool cautare( Nod** v, int x)
{
Nod * prim ;
int poz = h(x);
for(prim = v[poz]; prim != NULL; prim = prim->next)
{
if ( prim ->info == x)
return true;
}
return false;
}
int main()
{
ifstream in ("hashuri.in");
ofstream out ("hashuri.out");
Nod **v;
int n , op, x, i;
v = alocare ();
in >> n;
for ( i = 0 ;i < n; i++)
{
in >> op >> x;
if( op == 1)
inserare (v, x);
else{
if ( op == 2 )
stergere(v,x);
else out <<cautare(v,x) << "\n";
}
}
in.close();
out.close();
return 0;
}