summaryrefslogtreecommitdiff
path: root/set_linked_lists.c
diff options
context:
space:
mode:
authorAlex AUVOLAT <alex.auvolat@ens.fr>2013-11-24 21:56:36 +0100
committerAlex AUVOLAT <alex.auvolat@ens.fr>2013-11-24 21:56:36 +0100
commit8211bf815dbcf193439fc3f0927a5e9de1bce3bc (patch)
tree8e5fa976fb43cfb38efc2a9bd2fa8d111b250a27 /set_linked_lists.c
parent7dc7d76a225a0eeac49689058bcb67c5fe328c33 (diff)
downloadAlgoProg-Projet-8211bf815dbcf193439fc3f0927a5e9de1bce3bc.tar.gz
AlgoProg-Projet-8211bf815dbcf193439fc3f0927a5e9de1bce3bc.zip
Implemented basic algorithm for finding maximum clique... no optimizations.
Diffstat (limited to 'set_linked_lists.c')
-rw-r--r--set_linked_lists.c28
1 files changed, 27 insertions, 1 deletions
diff --git a/set_linked_lists.c b/set_linked_lists.c
index d7ea499..8cc77c4 100644
--- a/set_linked_lists.c
+++ b/set_linked_lists.c
@@ -51,11 +51,33 @@ typedef struct set_elt *element;
set empty_set(int n) {
set k = malloc(sizeof(t_set_descriptor));
+ k->N = n;
k->first = k->last = NULL;
k->size = 0;
return k;
}
+set full_set(int n) {
+ int i;
+ set k = malloc(sizeof(t_set_descriptor));
+ k->N = n;
+
+ element prev = NULL;
+ for (i = 0; i < n; i++) {
+ element e = malloc(sizeof(struct set_elt));
+ e->value = i;
+ if (prev == NULL) {
+ k->first = e;
+ } else {
+ prev->next = e;
+ }
+ k->last = prev = e;
+ }
+
+ k->size = n;
+ return k;
+}
+
set copy_set(const set s) {
element iter, prev;
@@ -63,7 +85,7 @@ set copy_set(const set s) {
t->size = s->size;
t->first = NULL;
- if (s->size) {
+ if (s->size > 0) {
prev = malloc(sizeof(struct set_elt));
prev->value = s->first->value;
t->first = prev;
@@ -96,6 +118,10 @@ void delete_set(set s) {
free(s);
}
+int set_size(const set s) {
+ return s->size;
+}
+
void set_union_ip(set a, const set b) {
if (b->size == 0) return;