Pagini recente » Cod sursa (job #2832502) | Cod sursa (job #2709511) | Cod sursa (job #798804) | Cod sursa (job #273865) | Cod sursa (job #1110995)
#include <stdio.h>
#include <fstream>
#define modulo 666013
using namespace std;
ifstream in ( "hashuri.in" ) ;
struct node
{
unsigned int value;
node *next ;
};
struct hash_table
{
bool used ;
node *next ;
};
hash_table vect[modulo] ;
node *p ;
unsigned int x ;
int n , tip , i , y ;
void insert_hash ()
{
node *q ;
q = new node ; q->value = x ; q->next = NULL ;
if ( vect[y].used == 0 ) { vect[y].next = q ; vect[y].used = 1 ; }
else
{
p = vect[y].next ;
while ( p->next != NULL )
{
p = p->next ;
}
p->next = q ;
}
}
void delete_hash ()
{
if ( vect[y].used )
{
if ( vect[y].next->next == NULL )
{
vect[y].used = 0 ; vect[y].next = NULL ;
}
else
{
p = vect[y].next ;
while ( p->next->next != NULL )
{
p = p->next ;
}
p->next = NULL ;
}
}
}
void call_hash ()
{
if ( vect[y].used )
{
p = vect[y].next ;
while ( p->value != x && p->next != NULL )
{
p = p->next ;
}
if ( p->value == x ) { printf ( "1\n" ) ; }
else { printf ( "0\n" ) ; }
}
else
{
printf ( "0\n" ) ;
}
}
int function_hash ()
{
return ( x % modulo ) ;
}
int main()
{
freopen ( "hashuri.out" , "w" , stdout ) ;
in >> n ;
for ( i = 1 ; i <= n ; i ++ )
{
in >> tip >> x ;
y = function_hash() ;
if ( tip == 1 ) { insert_hash() ; }
else if ( tip == 2 ) { delete_hash() ; }
else { call_hash() ; }
}
return 0;
}