Pagini recente » Cod sursa (job #18124) | Cod sursa (job #588628) | Cod sursa (job #2166891) | Cod sursa (job #969460) | Cod sursa (job #1527879)
#include <fstream>
using namespace std;
class Node {
public:
int value;
Node *next;
Node() {
value = -1;
next = NULL;
}
};
class Hash {
private:
const int MOD = 666013;
Node **h = new Node* [MOD];
public:
void insertValue(int x) {
int l = x % MOD;
Node *node = h[l];
while(node->next != NULL) {
if(node->value == x) {
return;
}
node = node->next;
}
node->value = x;
Node *tmp = new Node;
node->next = tmp;
}
void deleteValue(int x) {
int l = x % MOD;
Node *node = h[l];
if(node->value == x) {
h[l] = node->next;
delete node;
}
else {
while(node->next && node->next->value != x) {
node = node->next;
}
if(node->next != NULL) {
Node *tmp = node->next;
node->next = node->next->next;
delete tmp;
}
}
}
bool searchValue(int x) {
int l = x % MOD;
Node *node = h[l];
while(node->next != NULL && node->value != x) {
node = node->next;
}
if(node->value == x) {
return true;
}
else {
return false;
}
}
Hash() {
for(int i = 0; i < MOD; ++i) {
h[i] = new Node;
}
}
};
int main()
{
ifstream f("hashuri.in");
ofstream g("hashuri.out");
int n;
f >> n;
Hash h;
for(int i = 0; i < n; ++i) {
int op, x;
f >> op >> x;
if(op == 1) {
h.insertValue(x);
}
else if(op == 2) {
h.deleteValue(x);
}
else if(op == 3) {
g << h.searchValue(x) << "\n";
}
}
return 0;
}