Pagini recente » Cod sursa (job #2332945) | Cod sursa (job #382649) | Cod sursa (job #2852945) | Cod sursa (job #77091) | Cod sursa (job #1042669)
//
// main.c
// hashuri
//
// Created by Alexandru Bâgu on 11/27/13.
// Copyright (c) 2013 Alexandru Bâgu. All rights reserved.
//
#include <stdio.h>
#define HASH_KEY 8192
struct hashPoint{
int value;
struct hashPoint *next;
};
#define node struct hashPoint
int add(node* nodes, int x)
{
node *_node = &nodes[x % HASH_KEY];
while(_node != NULL)
{
if(_node->next == NULL)
{
_node->value = x;
_node->next = malloc(sizeof(node));
_node->next->next = NULL;
return 0;
}
else
{
if(_node->value == x) return 0;
else _node = _node->next;
}
}
return 0;
}
int rem(node* nodes, int x)
{
node *_node = &nodes[x % HASH_KEY];
node * next = _node->next;
while(_node != NULL)
{
if(_node->next == NULL)
return 0;
else if(_node->value == x)
{
_node->value = _node->next->value;
_node->next = _node->next->next;
return 1;
}
else _node = _node->next;
}
return 0;
}
int contains(node* nodes, int x)
{
node *_node = &nodes[x % HASH_KEY];
while(_node != NULL)
{
if(_node->next == NULL)
{
return 0;
}
else
{
if(_node->value == x) return 1;
else _node = _node->next;
}
}
return 0;
}
int main(int argc, const char * argv[])
{
FILE* fin = fopen("hashuri.in", "r"),
* fout = fopen("hashuri.out", "w");
node *hash = malloc(sizeof(node) * HASH_KEY);
int n, i;
int q, x;
fscanf(fin, "%d", &n);
for(i = 0; i < n; i++)
{
fscanf(fin, "%d %d", &q, &x);
if(q == 1) add(hash, x);
else if(q == 2) rem(hash, x);
else if(q == 3) fprintf(fout, "%d \n", contains(hash, x));
}
return 0;
}