summaryrefslogtreecommitdiff
path: root/comp/lucas-standen-NEA/code/ads
diff options
context:
space:
mode:
Diffstat (limited to 'comp/lucas-standen-NEA/code/ads')
-rw-r--r--comp/lucas-standen-NEA/code/ads/Makefile6
-rw-r--r--comp/lucas-standen-NEA/code/ads/dict/Makefile4
-rw-r--r--comp/lucas-standen-NEA/code/ads/dict/dict.c29
-rw-r--r--comp/lucas-standen-NEA/code/ads/dict/dict.h9
-rwxr-xr-xcomp/lucas-standen-NEA/code/ads/dict/dicttestbin0 -> 20536 bytes
-rw-r--r--comp/lucas-standen-NEA/code/ads/dict/dicttest.c10
-rw-r--r--comp/lucas-standen-NEA/code/ads/ll/Makefile5
-rw-r--r--comp/lucas-standen-NEA/code/ads/ll/ll.c57
-rw-r--r--comp/lucas-standen-NEA/code/ads/ll/ll.h16
-rwxr-xr-xcomp/lucas-standen-NEA/code/ads/ll/lltestbin0 -> 20632 bytes
-rw-r--r--comp/lucas-standen-NEA/code/ads/ll/lltest.c19
11 files changed, 155 insertions, 0 deletions
diff --git a/comp/lucas-standen-NEA/code/ads/Makefile b/comp/lucas-standen-NEA/code/ads/Makefile
new file mode 100644
index 0000000..d6332cb
--- /dev/null
+++ b/comp/lucas-standen-NEA/code/ads/Makefile
@@ -0,0 +1,6 @@
+all:
+ cd dict; make
+ cd ll; make
+tests: all
+ cd dict; make test
+ cd ll; make test
diff --git a/comp/lucas-standen-NEA/code/ads/dict/Makefile b/comp/lucas-standen-NEA/code/ads/dict/Makefile
new file mode 100644
index 0000000..f224267
--- /dev/null
+++ b/comp/lucas-standen-NEA/code/ads/dict/Makefile
@@ -0,0 +1,4 @@
+all: dict.c
+ cc dict.c -c -o dict.o
+test: all
+ cc dict.o dicttest.c -o dicttest
diff --git a/comp/lucas-standen-NEA/code/ads/dict/dict.c b/comp/lucas-standen-NEA/code/ads/dict/dict.c
new file mode 100644
index 0000000..551afca
--- /dev/null
+++ b/comp/lucas-standen-NEA/code/ads/dict/dict.c
@@ -0,0 +1,29 @@
+#include <stdlib.h>
+#include <string.h>
+
+typedef struct dict_t {
+ int id;
+ void *data;
+}dict_t;
+
+dict_t *dictalloc(){
+ dict_t *output = malloc(sizeof(dict_t));
+ return output;
+}
+
+int dictset(dict_t *dict, int id, void *data){
+ dict->id = id;
+
+ dict->data = malloc(sizeof(data));
+ if (dict->data == NULL)
+ return 1;
+ memcpy(dict->data, data, sizeof(data));
+
+ return 0;
+}
+
+void dictfree(dict_t *dict){
+ free(dict->data);
+ free(dict);
+}
+
diff --git a/comp/lucas-standen-NEA/code/ads/dict/dict.h b/comp/lucas-standen-NEA/code/ads/dict/dict.h
new file mode 100644
index 0000000..e6ab69d
--- /dev/null
+++ b/comp/lucas-standen-NEA/code/ads/dict/dict.h
@@ -0,0 +1,9 @@
+typedef struct dict_t {
+ int id;
+ void *data;
+}dict_t;
+
+dict_t *dictalloc();
+int dictset(dict_t *dict, int id, void *data);
+void dictfree(dict_t *dict);
+
diff --git a/comp/lucas-standen-NEA/code/ads/dict/dicttest b/comp/lucas-standen-NEA/code/ads/dict/dicttest
new file mode 100755
index 0000000..dddf2a0
--- /dev/null
+++ b/comp/lucas-standen-NEA/code/ads/dict/dicttest
Binary files differ
diff --git a/comp/lucas-standen-NEA/code/ads/dict/dicttest.c b/comp/lucas-standen-NEA/code/ads/dict/dicttest.c
new file mode 100644
index 0000000..4a20870
--- /dev/null
+++ b/comp/lucas-standen-NEA/code/ads/dict/dicttest.c
@@ -0,0 +1,10 @@
+#include <stdio.h>
+
+#include "dict.h"
+
+int main(){
+ dict_t *dict = dictalloc();
+ dictset(dict, 1, "hello");
+ printf("%d:%s\n", dict->id, (char *)dict->data);
+ dictfree(dict);
+}
diff --git a/comp/lucas-standen-NEA/code/ads/ll/Makefile b/comp/lucas-standen-NEA/code/ads/ll/Makefile
new file mode 100644
index 0000000..aaf0241
--- /dev/null
+++ b/comp/lucas-standen-NEA/code/ads/ll/Makefile
@@ -0,0 +1,5 @@
+all: ll.c
+ cc ll.c -c -o ll.o
+
+test: all
+ cc ll.o lltest.c -o lltest
diff --git a/comp/lucas-standen-NEA/code/ads/ll/ll.c b/comp/lucas-standen-NEA/code/ads/ll/ll.c
new file mode 100644
index 0000000..ba0a0df
--- /dev/null
+++ b/comp/lucas-standen-NEA/code/ads/ll/ll.c
@@ -0,0 +1,57 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+typedef struct ll_t ll_t;
+
+typedef struct ll_t {
+ void *data;
+ ll_t *next;
+} ll_t;
+
+ll_t *llalloc(){
+ ll_t *output = malloc(sizeof(ll_t));
+ if (output == NULL)
+ return NULL;
+ output->next = NULL;
+ return output;
+}
+
+void llsetdata(ll_t *node, void *data){
+ node->data = malloc(sizeof(data));
+ memcpy(node->data, data, sizeof(data));
+}
+
+void llsetnext(ll_t *node, ll_t *next){
+ if (node->next == NULL)
+ node->next = next;
+ else
+ llsetnext(node->next, next);
+}
+
+void *llgetat(ll_t *head, int index){
+ if (index == 0)
+ return head->data;
+ else {
+ if (head->next != NULL) {
+ return llgetat(head->next, index - 1);
+ }else {
+ return NULL;
+ }
+ }
+}
+
+ll_t *llgetendnode(ll_t *head){
+ if (head->next == NULL)
+ return head;
+ else
+ return llgetendnode(head->next);
+}
+
+void llfreeall(ll_t *head){
+ if (head->next != NULL)
+ llfreeall(head->next);
+ free(head->data);
+ free(head);
+}
+
diff --git a/comp/lucas-standen-NEA/code/ads/ll/ll.h b/comp/lucas-standen-NEA/code/ads/ll/ll.h
new file mode 100644
index 0000000..33b4d57
--- /dev/null
+++ b/comp/lucas-standen-NEA/code/ads/ll/ll.h
@@ -0,0 +1,16 @@
+#include <stdlib.h>
+#include <string.h>
+
+typedef struct ll_t ll_t;
+
+typedef struct ll_t {
+ void *data;
+ ll_t *next;
+} ll_t;
+
+ll_t *llalloc();
+void llsetdata(ll_t *node, void *data);
+void llsetnext(ll_t *node, ll_t *next);
+void *llgetat(ll_t *head, int index);
+ll_t *llgetendnode(ll_t *head);
+void llfreeall(ll_t *head);
diff --git a/comp/lucas-standen-NEA/code/ads/ll/lltest b/comp/lucas-standen-NEA/code/ads/ll/lltest
new file mode 100755
index 0000000..14653f6
--- /dev/null
+++ b/comp/lucas-standen-NEA/code/ads/ll/lltest
Binary files differ
diff --git a/comp/lucas-standen-NEA/code/ads/ll/lltest.c b/comp/lucas-standen-NEA/code/ads/ll/lltest.c
new file mode 100644
index 0000000..454acdf
--- /dev/null
+++ b/comp/lucas-standen-NEA/code/ads/ll/lltest.c
@@ -0,0 +1,19 @@
+#include <stdio.h>
+
+#include "ll.h"
+
+int main(){
+ ll_t *head = llalloc();
+ llsetdata(head, "hello");
+
+ for (int i = 0; i < 3; i++){
+ ll_t *node = llalloc();
+ llsetdata(node, "hi");
+ llsetnext(head, node);
+ }
+ for (int i = 0; i < 4; i++)
+ printf("%s\n", (char *)llgetat(head, i));
+ printf("%s\n", llgetendnode(head)->data);
+
+ llfreeall(head);
+}