Pagini recente » Cod sursa (job #1934966) | Cod sursa (job #3275560) | Cod sursa (job #1605920) | Cod sursa (job #1451723) | Cod sursa (job #2088163)
#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);
if(A[pozitie] == NULL ){
return false;
}else{
elem * parcurg = A[pozitie];
while(parcurg -> val != valoare && parcurg != NULL){
parcurg = parcurg -> urm;
}
if(parcurg == NULL){
return false;
}else{
return true;
}
}
}
void citire(){
in >> optiune >> valoare;
}
void rezolvare(){
if(optiune == 1){
inserare(valoare);
}else if(optiune == 2){
stergere(valoare);
} else{
out << cautareElement(valoare) << '\n';
}
}
int main() {
in >> nrOptiuni;
for(int i = 1; i<= nrOptiuni; i++){
citire();
rezolvare();
}
in.close();
out.close();
return 0;
}