Pagini recente » Cod sursa (job #2265388) | Cod sursa (job #2620323) | Cod sursa (job #62334) | Cod sursa (job #533551) | Cod sursa (job #489799)
Cod sursa(job #489799)
#include <stdio.h>
struct Hash {
long nr;
Hash * urm;
};
class Vect {
private:
Hash * prim, * ultim;
public:
Vect();
void insert(int x);
void remove(int x);
int find(int x);
};
Vect::Vect() {
this->prim = this->ultim = NULL;
}
void Vect::insert(int x) {
Hash * p = new Hash;
p->nr = x;
p->urm = NULL;
if (!this->prim)
this->prim = this->ultim = p;
else {
this->ultim->urm = p;
this->ultim = p;
}
}
int Vect::find(int x){
Hash *p;
for (p = this->prim; p != NULL; p = p->urm)
if (p->nr == x) return 1;
return 0;
}
void Vect::remove(int x) {
Hash *p;
if (this->prim->nr == x) {
p = this->prim;
this->prim = this->prim->urm;
delete p;
}
for ( p = this->prim; p->urm != NULL && p->urm->nr != x; p = p->urm);
if (p) {
Hash * q = p->urm;
p->urm = p->urm->urm;
delete q;
}
}
int main() {
FILE * fin = fopen("hashuri.in", "r");
FILE * fout = fopen("hashuri.out", "w");
Vect v;
int n, op, i, x;
fscanf(fin, "%d", &n);
for (i = 1; i <= n; i++) {
fscanf(fin, "%d", &op);
switch(op) {
case 1:{
fscanf(fin, "%d", &x);
if (!v.find(x)) v.insert(x);
}break;
case 2:{
fscanf(fin, "%d", &x);
v.remove(x);
}break;
case 3:{
fscanf(fin, "%d", &x);
fprintf(fout, "%d\n", v.find(x));
}break;
}
}
fclose(fin);
fclose(fout);
return 0;
}