Pagini recente » Cod sursa (job #307422) | Cod sursa (job #901635) | Cod sursa (job #546627) | Cod sursa (job #744130) | Cod sursa (job #2287512)
#include <fstream>
using namespace std;
ifstream in("hashuri.in");
ofstream out("hashuri.out");
const int MOD = 1000003;
struct node{
int value;
node *next;
};
node *h[MOD]; /// hash
void addNode(int pos, int val){
node *q = new node;
q->value = val;
q->next = h[pos];
h[pos] = q;
}
int convert(int key){
return key % MOD;
}
bool searchValue(int key, int val){
///checks if val already exists in the hash table
///0 means that the value wasn't found
for(node *i = h[key];i;i = i->next)
if(i->value == val)
return true;
return false;
}
void insertValue(int val){
int key = convert(val);
bool exists = searchValue(key,val);
if(exists == 0)
addNode(key,val);
}
void deleteValue(int val){
int key = convert(val);
node *temp = new node;
if(h[key] == NULL)
return ;
if(h[key]->value == val)
h[key] = h[key]->next;
else{
temp = h[key];
for(node *i = h[key]->next;i;i = i->next){
if(i->value == val){
temp->next = i->next;
delete temp;
return ;
}
temp = i;
}
}
}
int main()
{
int n, q, val;
in>>n;
for(int i=1;i<=n;i++){
in>>q>>val;
if(q == 1)
insertValue(val);
else if(q == 2)
deleteValue(val);
else
out<<searchValue(convert(val),val)<<"\n";
}
in.close();
out.close();
return 0;
}