Pagini recente » Cod sursa (job #581153) | Cod sursa (job #1027912) | Cod sursa (job #2557856) | Cod sursa (job #1844125) | Cod sursa (job #2456383)
#include<stdio.h>
using namespace std;
#define HASH_TABLE_SIZE 666013
FILE*f=fopen("hashuri.in","r");
FILE*g=fopen("hashuri.out","w");
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 (fscanf(f, "%d", &no_operations);no_operations; no_operations--) {
fscanf(f, "%d %d", &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
fprintf(g, "%d\n", Is_Element_Hash_Table(no_requested_user));
}
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;
}