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; | 
