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