Pagini recente » Cod sursa (job #1801463) | Cod sursa (job #1072434) | Cod sursa (job #2893427) | Cod sursa (job #322504) | Cod sursa (job #3135728)
#include <iostream>
#include <vector>
#include <map>
#include <cstring>
#include <fstream>
#include <sstream>
#include <string>
#include <algorithm>
#include <queue>
#include <cmath>
#include <set>
#include <unordered_map>
#include <stack>
#include <iomanip>
#include <random>
#include <climits>
using namespace std;
ifstream fin("hashuri.in");
ofstream fout("hashuri.out");
struct Node {
long long value;
Node *next;
};
Node *head = NULL;
int searchElement(long long value) {
Node *currentHead = head;
while (currentHead != NULL) {
if (currentHead->value == value) {
return 1;
}
// fout << currentHead->value << " ";
currentHead = currentHead->next;
}
return 0;
}
void insert(long long value) {
if (searchElement(value) == 1) {
return;
}
Node *newNode = new Node();
newNode->value = value;
newNode->next = head;
head = newNode;
}
void deleteElement(long long value) {
Node *currentHead = head;
int index = 0, foundAt = -1;
while (currentHead != NULL) {
if (currentHead->value == value) {
foundAt = index;
break;
}
++index;
currentHead = currentHead->next;
}
if (foundAt == -1) {
return;
}
if (foundAt == 0) {
Node *deletedNode = head;
head = head->next;
delete deletedNode;
return;
}
currentHead = head;
for (int i = 0; i < foundAt - 1; ++i) {
currentHead = currentHead->next;
}
Node *deletedNode = currentHead;
currentHead->next = deletedNode->next;
delete deletedNode;
}
int main() {
int n;
fin >> n;
for (int i = 0; i < n; ++i) {
int type;
long long value;
fin >> type >> value;
if (type == 1) {
insert(value);
} else if (type == 2) {
deleteElement(value);
} else if (type == 3) {
fout << searchElement(value);
fout << "\n";
}
}
return 0;
}