Treeset skeleton
This commit is contained in:
parent
f34dfcdccd
commit
b0d86c7e2c
4 changed files with 72 additions and 0 deletions
14
treeset/Makefile
Normal file
14
treeset/Makefile
Normal file
|
@ -0,0 +1,14 @@
|
|||
CC = gcc
|
||||
CFLAGS = -Wall -O2
|
||||
|
||||
TARGET = main.elf
|
||||
SRC = main.c treeset.c
|
||||
|
||||
#LDFLAGS =
|
||||
|
||||
$(TARGET): $(SRC)
|
||||
@echo CC $@
|
||||
@$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
||||
|
||||
clean:
|
||||
rm -f $(TARGET)
|
7
treeset/main.c
Normal file
7
treeset/main.c
Normal file
|
@ -0,0 +1,7 @@
|
|||
#include "treeset.h"
|
||||
#include <stdio.h>
|
||||
|
||||
int main() {
|
||||
treeset_t tree = {};
|
||||
return 0;
|
||||
}
|
25
treeset/treeset.c
Normal file
25
treeset/treeset.c
Normal file
|
@ -0,0 +1,25 @@
|
|||
#include "treeset.h"
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
struct treeset_node {
|
||||
void *data;
|
||||
struct treeset_node *left;
|
||||
struct treeset_node *right;
|
||||
};
|
||||
|
||||
struct treeset {
|
||||
treeset_node_t *root;
|
||||
size_t node_count;
|
||||
};
|
||||
|
||||
void ts_node_destroy(treeset_node_t *n) {
|
||||
if (n->left != NULL)
|
||||
ts_node_destroy((treeset_node_t *)n->left);
|
||||
if (n->right != NULL)
|
||||
ts_node_destroy((treeset_node_t *)n->left);
|
||||
|
||||
free(n);
|
||||
}
|
||||
|
||||
void treeset_destroy(treeset_t *set) { ts_node_destroy(set->root); }
|
26
treeset/treeset.h
Normal file
26
treeset/treeset.h
Normal file
|
@ -0,0 +1,26 @@
|
|||
#pragma once
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
typedef struct treeset treeset_t;
|
||||
typedef struct treeset_node treeset_node_t;
|
||||
|
||||
/*
|
||||
* Cast a and b to your custom struct and return:
|
||||
* 1 for greater than
|
||||
* -1 for less than
|
||||
* 0 for equal
|
||||
*/
|
||||
int treeset_demo_cmp(void *a, void *b) {
|
||||
if (*((int *)a) > *((int *)a))
|
||||
return -1;
|
||||
if (*((int *)a) < *((int *)a))
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void treeset_destroy(treeset_t *set);
|
||||
void put(treeset_t *set, void *data, int (*cmp)(void *, void *));
|
||||
// contains
|
||||
// remove
|
Loading…
Add table
Reference in a new issue