Treap interface definition
This commit is contained in:
parent
3d5e1529c4
commit
386de7a8ed
1 changed files with 45 additions and 2 deletions
47
file.hpp
47
file.hpp
|
@ -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
|
||||
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);
|
||||
}
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue