diff options
-rw-r--r-- | node.c | 43 | ||||
-rw-r--r-- | node.h | 18 |
2 files changed, 61 insertions, 0 deletions
@@ -0,0 +1,43 @@ +#include <stdio.h> +#include <stdlib.h> +#include <assert.h> +#include <string.h> + +#include "node.h" + +/*constructor*/ +node_t* mknode(str) +char *str; +{ + node_t *p = malloc(sizeof(node_t)); + assert(p); + + p->name = strdup(str); + p->next = NULL; + + return p; +} + +/* helpers */ +node_t* search(root, str) +node_t *root; +char *str; +{ + node_t *p = root; + while (p) { + if (!strcmp(p->name, str)) { + return p; + } + p = p->next; + } + return NULL; +} + +node_t* insert(root, str) /*TODO change to accept double pointer*/ +node_t *root; +char * str; +{ + node_t *p = mknode( str ); + p->next = root; + return p; +} @@ -0,0 +1,18 @@ +#ifndef NODE_H +#define NODE_H + +/* Linked list */ + +typedef struct node_s { + char *name; + struct node_s *next; +} node_t; + +/*constructor*/ +node_t* mknode(char *); + +/* helpers */ +node_t* search(node_t*, char *); +node_t* insert(node_t*, char*); + +#endif |