aboutsummaryrefslogtreecommitdiffstats
path: root/cover.h
blob: c8b5163756486aa626c5dae85906e7d08fa99846 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#ifndef COVER_H
#define COVER_H
typedef struct set set;
typedef struct element element;
typedef struct bucket bucket;
typedef struct parent parent;

struct element {
    int id;
    element* next;
    element* prev;
    set* set;
};

struct bucket {
    int size;
    bucket* prev;
    bucket* next;
    set* head;
};

struct set {
    int id;
    set* next;
    set* prev;
    element* head;
    bucket* bucket;
};

struct parent {
    element* pos;
    parent* next;
};

element* insert_element(set* s, int id);
set* new_set(int id);
parent* new_parent(element* el);
void insert_parent(parent** parents, element* el);
bucket* new_bucket(set* s, int size);
void insert_set(set* s, bucket* b);
void remove_bucket(bucket* b);
void detach_set(set* s);
void attach_set(set* s, int size, bucket* b);
void demote(set* s);
void remove_element(element* el);
void remove_parents(element* el, parent** parents);
void greedy(bucket* head, parent** parents);
#endif