Pagini recente » Cod sursa (job #800701) | Cod sursa (job #2558983) | Cod sursa (job #2240961) | Cod sursa (job #638592) | Cod sursa (job #329296)
Cod sursa(job #329296)
#define HASH_TABLE_SIZE 666013
#define _CRT_SECURE_NO_WARNINGS
#include <cstdio>
struct nod{
int val;
nod* next;
};
nod* vec[HASH_TABLE_SIZE];
int H(int key){
return key%666013;
}
bool find(int key){
int index = H(key);
if (!vec[index]) return 0;
nod *q = vec[index];
for (; q && q->val != key; q = q->next);
return q;
}
void ins(int key){
if (find(key)) return;
nod *p = new nod;
p->val = key;
p->next = NULL;
int index = H(key);
if ( vec[index] ){
nod *q = vec[index];
for (; q->next; q = q->next);
q->next = p;
}
else
vec[index] = p;
}
void del(int key){
int index = H(key);
if (!find(key)) return;
if (vec[index]->val == key) {
nod *p = vec[index];
vec[index] = vec[index]->next;
delete(p);
}
else {
nod *q = vec[index];
for (; q->next->val != key; q = q->next);
nod *p = q->next;
q->next = p->next;
delete(p);
}
}
int main(){
freopen("hashuri.in", "r", stdin);
freopen("hashuri.out", "w", stdout);
int n, op, key;
for (scanf("%d", &n); n; --n){
scanf("%d %d", &op, &key);
switch (op){
case 1: ins(key);
break;
case 2: del(key);
break;
case 3: printf("%d\n", find(key));
break;
}
}
return 0;
}