Pagini recente » Cod sursa (job #1364402) | Cod sursa (job #2836222) | Cod sursa (job #2845340) | Cod sursa (job #1809165) | Cod sursa (job #969620)
Cod sursa(job #969620)
#include <iostream>
#include <fstream>
#define long int
#define N 666013
using namespace std;
struct node
{
long val;
node* next;
};
struct hashtable
{
node* T[N];
};
hashtable H;
int find(long x)
{
long code = x % N;
node* p = H.T[code];
while (p != NULL)
{
if (p->val == x)
return 1;
p = p->next;
}
return 0;
}
void add(long x)
{
if (find(x) == 1)
return;
else
{
node* aux = new node;
aux->val = x;
aux->next = H.T[x%N];
H.T[x%N] = aux;
}
}
void del(long x)
{
long code = x%N;
if (H.T[code] == NULL)
return;
else
{
if (H.T[code]->val == x)
{
H.T[code] = H.T[code]->next;
}
else
{
node* p = H.T[code];
node* c = p->next;
while (c != NULL && c->val != x)
{
c = c->next;
p = p->next;
}
if (c == NULL)
return;
else
{
p->next = c->next;
delete c;
}
}
}
}
int main()
{
long n = 0;
int op = -1;
long val = 0;
ifstream f("hashuri.in");
ofstream g("hashuri.out");
f>>n;
for (long i=0;i<n;i++)
{
f>>op>>val;
switch(op)
{
case 1: add(val);break;
case 2: del(val);break;
case 3: g<<find(val)<<"\n";break;
default:break;
}
}
f.close();
g.close();
return 0;
}