Pagini recente » Cod sursa (job #2605964) | Cod sursa (job #634766) | Cod sursa (job #1140947) | Cod sursa (job #764503) | Cod sursa (job #3130799)
//
// Created by Octavian Farcasi on 18.05.2023.
//
#include<iostream>
#include<fstream>
struct nod_lista{
int valoare=-1;
nod_lista *next= nullptr;
};
class Hash{
private:
nod_lista *hash[100003];
public:
void inserare(int valoare){
int index=valoare%100003;
if(hash[index]== nullptr){
hash[index]=new nod_lista;
hash[index]->valoare=valoare;
}else{
nod_lista *ptr=hash[index];
while(ptr->next!= nullptr && ptr->valoare!=valoare)
ptr=ptr->next;
if(ptr->valoare!=valoare){
ptr->next=new nod_lista;
ptr->next->next= nullptr;
ptr->next->valoare=valoare;
}
}
}
void stergere(int valoare){
int index=valoare%100003;
nod_lista *ptr;
if(hash[index]!= nullptr && hash[index]->valoare==valoare){
ptr=hash[index]->next;
delete hash[index];
hash[index]=ptr;
}
else
if(hash[index]!= nullptr && hash[index]->valoare!=valoare && hash[index]->next!= nullptr){
ptr=hash[index];
int ok=0;
while(ptr->valoare!=valoare && ptr->next!= nullptr){
if(ptr->next->valoare==valoare){
ok=1;
break;
}
ptr=ptr->next;
}
if(ok==1){
nod_lista *ptr2=ptr->next->next;
delete ptr->next;
ptr->next=ptr2;
}
}
}
int find(int valoare){
int index= valoare%100003;
nod_lista *ptr=hash[index];
while(ptr!=nullptr && ptr->valoare!=valoare)
ptr=ptr->next;
if(ptr!= nullptr)
return 1;
return 0;
}
// void print(){
// std::cout<<hash[0]->next<<" "<<hash[0]->valoare<<" "<<hash[0]->next->valoare<<" "<<"\n";
// std::cout<<hash[40003]->next<<" "<<hash[40003]->valoare<<"\n\n";
// }
};
int main(){
std::ifstream f("hashuri.in");
std::ofstream g("hashuri.out");
int operatie,valoare,n,ok=0;
Hash t;
f>>n;
while(n>0){
f>>operatie>>valoare;
switch (operatie) {
case 1:
t.inserare(valoare);
break;
case 2:
t.stergere(valoare);
break;
case 3:
if(ok)
g<<"\n";
g<<t.find(valoare);
ok=1;
break;
}
n--;
}
f.close();
g.close();
return 0;
}