Pagini recente » Cod sursa (job #1326136) | Cod sursa (job #1287330) | Cod sursa (job #860767) | Cod sursa (job #1196879) | Cod sursa (job #2088176)
#include <iostream>
#include <fstream>
#include <cstring>
#define DMAX 1048575
using namespace std;
ifstream in("hashuri.in");
ofstream out("hashuri.out");
typedef struct elem{
int val;
elem * urm;
}NOD;
NOD * A[DMAX];
int optiune, valoare;
int nrOptiuni;
int cheie(int valoare){
int chei = valoare % DMAX;
return chei;
}
void inserare(int valoare){
int pozitie = cheie(valoare);
elem * deAdaugat = new elem;
deAdaugat -> val = valoare;
deAdaugat -> urm = A[pozitie];
A[pozitie] = deAdaugat;
}
void stergere(int valoare){
int pozitie = cheie(valoare);
elem * deSters ;
//daca elementul se afla primul in lista, il stergem;
if(A[pozitie] -> val == valoare){
deSters = A[pozitie];
A[pozitie] = A[pozitie] -> urm;
delete deSters;
}else{
elem * parcurg = A[pozitie];
while(parcurg != NULL && parcurg -> urm -> val != valoare){
parcurg = parcurg -> urm;
}
deSters = parcurg -> urm;
if(parcurg != NULL ){
parcurg -> urm = parcurg -> urm -> urm;
}
delete deSters;
}
}
bool cautareElement(int valoare){
int pozitie = cheie(valoare);
elem * parcurg = A[pozitie];
while(parcurg != NULL && parcurg -> val != valoare){
parcurg = parcurg -> urm;
}
if(parcurg == NULL){
return false;
}else{
return true;
}
}
void citire(){
in >> optiune >> valoare;
}
void rezolvare(){
if(optiune == 1 && cautareElement(valoare) == 0){
inserare(valoare);
}else if(optiune == 2 && cautareElement(valoare) == 1){
stergere(valoare);
} else if(optiune == 3){
out << cautareElement(valoare) << '\n';
}
}
int main() {
in >> nrOptiuni;
for(int i = 1; i<= nrOptiuni; i++){
citire();
rezolvare();
}
in.close();
out.close();
return 0;
}