diff --git a/conversions/c_atoi_str_to_integer.c b/conversions/c_atoi_str_to_integer.c index e16c7774..42325cdc 100644 --- a/conversions/c_atoi_str_to_integer.c +++ b/conversions/c_atoi_str_to_integer.c @@ -1,11 +1,11 @@ /** * \file - * \brief Recoding the original atoi function in stdlib.h + * \brief Recoding the original atoi function in stdlib.h * \author [Mohammed YMIK](https://github.com/medymik)W - * The function convert a string passed to an integer + * The function convert a string passed to an integer */ -#include #include +#include #include #include @@ -15,10 +15,10 @@ */ int c_atoi(const char *str) { - int i; - int sign; - long value; - long prev; + int i; + int sign; + long value; + long prev; i = 0; sign = 1; @@ -45,7 +45,7 @@ int c_atoi(const char *str) return (0); i++; } - return (value); + return (value); } /** @@ -63,12 +63,11 @@ int test_c_atoi() printf("<<<< TEST DONE >>>>\n"); } - /** * the main function take one argument of type char* * example : ./program 123 */ -int main(int argc, char **argv) +int main(int argc, char **argv) { if (argc == 2) { diff --git a/data_structures/binary_trees/threaded_binary_trees.c b/data_structures/binary_trees/threaded_binary_trees.c index 49accb08..8caf3772 100644 --- a/data_structures/binary_trees/threaded_binary_trees.c +++ b/data_structures/binary_trees/threaded_binary_trees.c @@ -23,10 +23,11 @@ /** * Node, the basic data structure of the tree **/ -typedef struct Node { - int data; /**< stores the number */ - struct Node *llink; /**< link to left child */ - struct Node *rlink; /**< link to right child */ +typedef struct Node +{ + int data; /**< stores the number */ + struct Node *llink; /**< link to left child */ + struct Node *rlink; /**< link to right child */ } node; /** @@ -34,11 +35,12 @@ typedef struct Node { * param[in] data value to be inserted * \returns a pointer to the new node **/ -node *create_node(int data) { - node *ptr = (node *)malloc(sizeof(node)); - ptr->rlink = ptr->llink = NULL; - ptr->data = data; - return ptr; +node *create_node(int data) +{ + node *ptr = (node *)malloc(sizeof(node)); + ptr->rlink = ptr->llink = NULL; + ptr->data = data; + return ptr; } /** @@ -46,33 +48,46 @@ node *create_node(int data) { * param[in,out] root pointer to node pointer to the topmost node of the tree * param[in] data value to be inserted into the tree */ -void insert_bt(node **root, int data) { - node *new_node = create_node(data); - node *temp; // to be deleted - node *prev; // keeps track of the parent of the element deleted - if (*root == NULL) { - *root = new_node; - } else { - temp = *root; - prev = NULL; - while (temp != NULL) { - if (new_node->data > temp->data) { - prev = temp; - temp = temp->rlink; - } else if (new_node->data < temp->data) { - prev = temp; - temp = temp->llink; - } else { - return; - } +void insert_bt(node **root, int data) +{ + node *new_node = create_node(data); + node *temp; // to be deleted + node *prev; // keeps track of the parent of the element deleted + if (*root == NULL) + { + *root = new_node; } + else + { + temp = *root; + prev = NULL; + while (temp != NULL) + { + if (new_node->data > temp->data) + { + prev = temp; + temp = temp->rlink; + } + else if (new_node->data < temp->data) + { + prev = temp; + temp = temp->llink; + } + else + { + return; + } + } - if (new_node->data > prev->data) { - prev->rlink = new_node; - } else { - prev->llink = new_node; + if (new_node->data > prev->data) + { + prev->rlink = new_node; + } + else + { + prev->llink = new_node; + } } - } } /** @@ -80,58 +95,73 @@ void insert_bt(node **root, int data) { * \param[in] root node pointer to the topmost node of the tree * \param[in] ele value searched for */ -void search(node *root, int ele) { - node *temp = root; - while (temp != NULL) { - if (temp->data == ele) { - break; - } else if (ele > temp->data) { - temp = temp->rlink; - } else { - temp = temp->llink; +void search(node *root, int ele) +{ + node *temp = root; + while (temp != NULL) + { + if (temp->data == ele) + { + break; + } + else if (ele > temp->data) + { + temp = temp->rlink; + } + else + { + temp = temp->llink; + } } - } - if (temp == NULL) { - printf("%s\n", "Element not found."); - } else - printf("%s\n", "Element found."); + if (temp == NULL) + { + printf("%s\n", "Element not found."); + } + else + printf("%s\n", "Element found."); } /** * performs inorder traversal * param[in] curr node pointer to the topmost node of the tree */ -void inorder_display(node *curr) { - if (curr != NULL) { - inorder_display(curr->llink); - printf("%d\t", curr->data); - inorder_display(curr->rlink); - } +void inorder_display(node *curr) +{ + if (curr != NULL) + { + inorder_display(curr->llink); + printf("%d\t", curr->data); + inorder_display(curr->rlink); + } } /** * performs postorder traversal * param[in] curr node pointer to the topmost node of the tree */ -void postorder_display(node *curr) { - if (curr != NULL) { - postorder_display(curr->llink); - postorder_display(curr->rlink); - printf("%d\t", curr->data); - } +void postorder_display(node *curr) +{ + if (curr != NULL) + { + postorder_display(curr->llink); + postorder_display(curr->rlink); + printf("%d\t", curr->data); + } } /** * performs preorder traversal * param[in] curr node pointer to the topmost node of the tree */ -void preorder_display(node *curr) { - if (curr != NULL) { - printf("%d\t", curr->data); - preorder_display(curr->llink); - preorder_display(curr->rlink); - } +void preorder_display(node *curr) +{ + if (curr != NULL) + { + printf("%d\t", curr->data); + preorder_display(curr->llink); + preorder_display(curr->rlink); + } } /** @@ -140,108 +170,134 @@ void preorder_display(node *curr) { * param[in,out] root pointer to node pointer to the topmost node of the tree * param[in] ele value to be deleted from the tree */ -void delete_bt(node **root, int ele) { - node *temp; - node *prev; - if (*root == NULL) - return; - else { - temp = *root; - prev = NULL; - // search - while (temp != NULL) { - if (temp->data == ele) { - break; - } else if (ele > temp->data) { - prev = temp; - temp = temp->rlink; - } else { - prev = temp; - temp = temp->llink; - } - } - } - - if (temp == NULL) - return; - else { - node *replacement; // deleted node's replacement - node *t; - if (temp->llink == NULL && temp->rlink == NULL) { - replacement = NULL; - } else if (temp->llink == NULL && temp->rlink != NULL) { - replacement = temp->rlink; - } else if (temp->llink != NULL && temp->rlink == NULL) { - replacement = temp->llink; - } else { - replacement = temp->rlink; // replaced with inorder successor - t = replacement; - while (t->llink != NULL) { - t = t->llink; - } - t->llink = temp->llink; // leftmost node of the replacement is linked to - // the left child of the deleted node +void delete_bt(node **root, int ele) +{ + node *temp; + node *prev; + if (*root == NULL) + return; + else + { + temp = *root; + prev = NULL; + // search + while (temp != NULL) + { + if (temp->data == ele) + { + break; + } + else if (ele > temp->data) + { + prev = temp; + temp = temp->rlink; + } + else + { + prev = temp; + temp = temp->llink; + } + } } - if (temp == *root) { - free(*root); - *root = replacement; - } else if (prev->llink == temp) { - free(prev->llink); - prev->llink = replacement; - } else if (prev->rlink == temp) { - free(prev->rlink); - prev->rlink = replacement; + if (temp == NULL) + return; + else + { + node *replacement; // deleted node's replacement + node *t; + if (temp->llink == NULL && temp->rlink == NULL) + { + replacement = NULL; + } + else if (temp->llink == NULL && temp->rlink != NULL) + { + replacement = temp->rlink; + } + else if (temp->llink != NULL && temp->rlink == NULL) + { + replacement = temp->llink; + } + else + { + replacement = temp->rlink; // replaced with inorder successor + t = replacement; + while (t->llink != NULL) + { + t = t->llink; + } + t->llink = + temp->llink; // leftmost node of the replacement is linked to + // the left child of the deleted node + } + + if (temp == *root) + { + free(*root); + *root = replacement; + } + else if (prev->llink == temp) + { + free(prev->llink); + prev->llink = replacement; + } + else if (prev->rlink == temp) + { + free(prev->rlink); + prev->rlink = replacement; + } } - } } /** * main function */ -int main() { - printf("BINARY THREADED TREE: \n"); - node *root = NULL; - int choice, n; - do { - printf("%s\n", "1. Insert into BT"); - printf("%s\n", "2. Print BT - inorder"); - printf("%s\n", "3. Print BT - preorder"); - printf("%s\n", "4. print BT - postorder"); - printf("%s\n", "5. delete from BT"); - printf("%s\n", "6. search in BT"); - printf("%s\n", "Type 0 to exit"); - scanf("%d", &choice); +int main() +{ + printf("BINARY THREADED TREE: \n"); + node *root = NULL; + int choice, n; + do + { + printf("%s\n", "1. Insert into BT"); + printf("%s\n", "2. Print BT - inorder"); + printf("%s\n", "3. Print BT - preorder"); + printf("%s\n", "4. print BT - postorder"); + printf("%s\n", "5. delete from BT"); + printf("%s\n", "6. search in BT"); + printf("%s\n", "Type 0 to exit"); + scanf("%d", &choice); - switch (choice) { - case 1: - printf("%s\n", "Enter a no:"); - scanf("%d", &n); - insert_bt(&root, n); - break; - case 2: - inorder_display(root); - printf("\n"); - break; - case 3: - preorder_display(root); - printf("\n"); - break; - case 4: - postorder_display(root); - printf("\n"); - break; - case 5: - printf("%s\n", "Enter a no:"); - scanf("%d", &n); - delete_bt(&root, n); - break; - case 6: - printf("%s\n", "Enter a no:"); - scanf("%d", &n); - search(root, n); - break; - } - } while (choice != 0); - return 0; + switch (choice) + { + case 1: + printf("%s\n", "Enter a no:"); + scanf("%d", &n); + insert_bt(&root, n); + break; + case 2: + inorder_display(root); + printf("\n"); + break; + case 3: + preorder_display(root); + printf("\n"); + break; + case 4: + postorder_display(root); + printf("\n"); + break; + case 5: + printf("%s\n", "Enter a no:"); + scanf("%d", &n); + delete_bt(&root, n); + break; + case 6: + printf("%s\n", "Enter a no:"); + scanf("%d", &n); + search(root, n); + break; + } + } while (choice != 0); + return 0; } diff --git a/machine_learning/kohonen_som_trace.c b/machine_learning/kohonen_som_trace.c index 912215a6..476f364f 100644 --- a/machine_learning/kohonen_som_trace.c +++ b/machine_learning/kohonen_som_trace.c @@ -21,12 +21,14 @@ #endif #ifndef max -#define max(a, b) (((a) > (b)) ? (a) : (b)) /**< shorthand for maximum value \ - */ +#define max(a, b) \ + (((a) > (b)) ? (a) : (b)) /**< shorthand for maximum value \ + */ #endif #ifndef min -#define min(a, b) (((a) < (b)) ? (a) : (b)) /**< shorthand for minimum value \ - */ +#define min(a, b) \ + (((a) < (b)) ? (a) : (b)) /**< shorthand for minimum value \ + */ #endif /**