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
|