// scanning text and counting word frequencies // note - can use stripWords to clean up words before sending to this program #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #include <assert.h> #include "/u1/h0/jkinne/public_html/cs202-f2019/code/data_structures/binary_tree/bst.h" /* Begin word_counts_t type declaration and functions for using */ int compare_int(void *data1, int data1_size, void *data2, int data2_size) { int *d1 = (int *) data1, *d2 = (int *) data2; return (*d1 - *d2); } void print_int(void *data, int data_size, int depth) { int *num = (int *) data; printf("%*s%d\n", depth, "", *num); } void free_int(void *data, int data_size) { ; } /* End word_counts_t type declaration and functions for using */ int main(int argc, char * argv[]) { tree_t * root = NULL; tree_t * p; int num; while (scanf("%d", &num) == 1) { int delete = 0; if (num < 0) { // negative is a code for deleting num *= -1; delete = 1; } p = bst_lookup(root, &num, sizeof(num)); if (p == NULL && ! delete) { root = bst_insert(root, &num, sizeof(num), FLAG_DO_NOT_REBALANCE, compare_int, print_int, free_int); } if (p != NULL && delete) { root = bst_delete(root, p, 0); } } bst_print(root, -1, FLAG_TREE | FLAG_SUMMARY | FLAG_SMALLEST_FIRST); return 0; }