diff options
-rw-r--r-- | btree.cpp | 16 | ||||
-rw-r--r-- | list.cpp | 25 |
2 files changed, 26 insertions, 15 deletions
@@ -40,22 +40,24 @@ BinaryTree<T> *insert(BinaryTree<T> *tree, T value) break; } - if (*node) { + if (*node) + { *node = insert(*node, value); return tree; } - *node = new BinaryTree<T>; + *node = new BinaryTree<T>; (*node)->value = value; (*node)->left = (*node)->right = nullptr; - (*node)->compare = tree->compare; + (*node)->compare = tree->compare; return tree; } int main(void) { - auto tree = new BinaryTree<int>; - tree->value = 5; - tree->compare = [](int x, int y) { + auto tree = new BinaryTree<int>; + tree->value = 5; + tree->compare = [](int x, int y) + { if (x < y) return LT; else if (x > y) @@ -65,9 +67,7 @@ int main(void) }; for (int i = 0; i <= 5; ++i) - { tree = insert(tree, i * 2); - } std::cout << tree->left->value << ", " << tree->value << ", " @@ -4,8 +4,8 @@ */ #include <cstdio> -#include <iostream> #include <cstdlib> +#include <iostream> template <typename T> struct List @@ -64,7 +64,7 @@ void map(List<T> *lst, U (*f)(T)) } template <typename T> -T reduce(List<T> *lst, T (*reducer) (T, T), T init = 0) +T reduce(List<T> *lst, T (*reducer)(T, T), T init = 0) { if (!lst) return init; @@ -86,7 +86,7 @@ List<T> *filter(List<T> *lst, bool (*f)(T), List<T> *new_lst = nullptr) } template <typename T> -std::ostream& operator<<(std::ostream& ostream, const List<T> *lst) +std::ostream &operator<<(std::ostream &ostream, const List<T> *lst) { if (!lst) return ostream; @@ -107,15 +107,26 @@ int main(void) std::cout << lst << std::endl; puts("Reverse list again..."); printf("Map list with f(x) = 2x: "); - map<int, int>(lst = reverse(lst), [](int x){ return x * 2; }); + map<int, int>(lst = reverse(lst), [](int x) { + return x * 2; + }); std::cout << lst << std::endl; puts("Reverse map..."); - map<int, int>(lst, [](int x){ return x / 2; }); + map<int, int>(lst, [](int x) { + return x / 2; + }); printf("Sum all numbers in list: "); - std::cout << reduce<int>(lst, [](int a, int b) { return a + b; }, 0) + std::cout << reduce<int>( + lst, + [](int a, int b) { + return a + b; + }, + 0) << std::endl; printf("Print all even numbers 1..10: "); - auto evens = filter<int>(lst, [](int a) { return a % 2 == 0; }); + auto evens = filter<int>(lst, [](int a) { + return a % 2 == 0; + }); std::cout << evens << std::endl; delete lst; delete evens; |