Pagini recente » Cod sursa (job #1875337) | Cod sursa (job #2618324) | Cod sursa (job #1348533) | Borderou de evaluare (job #1036230) | Cod sursa (job #2456354)
#include<fstream>
using namespace std;
#define HASH_TABLE_SIZE 666013
ifstream fin("hashuri.in");
ofstream fout("hashuri.out");
typedef struct Node {
int data;
struct Node* next;
}Node;
Node* head[HASH_TABLE_SIZE];
void Hash_Table_Add_Element(int requested_element);
void Hash_Table_Pop_Element(int requested_element);
bool Is_Element_Hash_Table(int requested_element);
int main()
{
int no_operations;
int operation_choice;
int no_requested_user;
for (fin >> no_operations;no_operations;no_operations--) {
fin >> operation_choice>>no_requested_user;
if (operation_choice == 1) {
if (!(Is_Element_Hash_Table(no_requested_user)))
Hash_Table_Add_Element(no_requested_user);
}
else if (operation_choice == 2) {
if (Is_Element_Hash_Table(no_requested_user))
Hash_Table_Pop_Element(no_requested_user);
}
else
fout << Is_Element_Hash_Table(no_requested_user) << endl;
}
return 0;
}
void Hash_Table_Add_Element(int requested_element) {
int key = requested_element % HASH_TABLE_SIZE;
Node* temp = new Node;
temp->data = requested_element;
temp->next = head[key];
head[key] = temp;
}
void Hash_Table_Pop_Element( int requested_element) {
int key = requested_element % HASH_TABLE_SIZE;
if (head[key]->data == requested_element) {
Node* temp = head[key];
head[key] = head[key]->next;
delete (temp);
}
else
{
Node* traversal_pointer;
for(traversal_pointer=head[key];traversal_pointer->next;traversal_pointer=traversal_pointer->next)
if (traversal_pointer->next->data == requested_element) {
Node* temp = traversal_pointer->next;
traversal_pointer->next = traversal_pointer->next->next;
delete(temp);
break;
}
}
}
bool Is_Element_Hash_Table(int requested_element) {
int key = requested_element % HASH_TABLE_SIZE;
Node* traversal_pointer;
for(traversal_pointer=head[requested_element%HASH_TABLE_SIZE];traversal_pointer;traversal_pointer=traversal_pointer->next)
if (requested_element==traversal_pointer->data)
return true;
return false;
}