Treap interface definition

This commit is contained in:
Matúš Púll 2025-03-18 14:50:38 +01:00
parent 3d5e1529c4
commit 386de7a8ed

View file

@ -1,6 +1,49 @@
#include <string>
#include <cstdlib>
#include <utility>
using std::string;
typedef unsigned long long priority_type;
#define RAND_MAX (1 << 62)
class line;
typedef std::pair<line*, line*> two_lines;
class line {
priority_type priority;
string text;
line *left, *right;
public:
line(priority_type _p, string _t) : priority(_p), text(_t) {}
two_lines split(string s) { return two_lines(nullptr, nullptr); }
void join(line *l) {}
void insert(line *l) {}
void remove(string s) {}
line* find(string s) { return nullptr; }
};
// Treap file representation // Treap file representation
class file { struct file {
line* root;
} file() {
srand(120);
root = nullptr;
}
void insert(string s) {
line *l = new line(rand(), s);
auto two = root->split(s);
two.first->join(l);
two.first->join(two.second);
}
void remove(string s) {
auto two = root->split(s);
two.first = two.first->split(s).first; // TODO sharp split
two.first->join(two.second);
}
line* find(string s) {
return root->find(s);
}
};