formatting source-code for b1d92cbdda

This commit is contained in:
github-actions 2020-06-20 11:28:26 +00:00
parent b1d92cbdda
commit 5347e6f87d
3 changed files with 231 additions and 174 deletions

View File

@ -4,8 +4,8 @@
* \author [Mohammed YMIK](https://github.com/medymik)W
* The function convert a string passed to an integer
*/
#include <stdio.h>
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@ -63,7 +63,6 @@ int test_c_atoi()
printf("<<<< TEST DONE >>>>\n");
}
/**
* the main function take one argument of type char*
* example : ./program 123

View File

@ -23,7 +23,8 @@
/**
* Node, the basic data structure of the tree
**/
typedef struct Node {
typedef struct Node
{
int data; /**< stores the number */
struct Node *llink; /**< link to left child */
struct Node *rlink; /**< link to right child */
@ -34,7 +35,8 @@ typedef struct Node {
* param[in] data value to be inserted
* \returns a pointer to the new node
**/
node *create_node(int data) {
node *create_node(int data)
{
node *ptr = (node *)malloc(sizeof(node));
ptr->rlink = ptr->llink = NULL;
ptr->data = data;
@ -46,30 +48,43 @@ 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) {
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) {
if (*root == NULL)
{
*root = new_node;
} else {
}
else
{
temp = *root;
prev = NULL;
while (temp != NULL) {
if (new_node->data > temp->data) {
while (temp != NULL)
{
if (new_node->data > temp->data)
{
prev = temp;
temp = temp->rlink;
} else if (new_node->data < temp->data) {
}
else if (new_node->data < temp->data)
{
prev = temp;
temp = temp->llink;
} else {
}
else
{
return;
}
}
if (new_node->data > prev->data) {
if (new_node->data > prev->data)
{
prev->rlink = new_node;
} else {
}
else
{
prev->llink = new_node;
}
}
@ -80,21 +95,30 @@ 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) {
void search(node *root, int ele)
{
node *temp = root;
while (temp != NULL) {
if (temp->data == ele) {
while (temp != NULL)
{
if (temp->data == ele)
{
break;
} else if (ele > temp->data) {
}
else if (ele > temp->data)
{
temp = temp->rlink;
} else {
}
else
{
temp = temp->llink;
}
}
if (temp == NULL) {
if (temp == NULL)
{
printf("%s\n", "Element not found.");
} else
}
else
printf("%s\n", "Element found.");
}
@ -102,8 +126,10 @@ void search(node *root, int ele) {
* performs inorder traversal
* param[in] curr node pointer to the topmost node of the tree
*/
void inorder_display(node *curr) {
if (curr != NULL) {
void inorder_display(node *curr)
{
if (curr != NULL)
{
inorder_display(curr->llink);
printf("%d\t", curr->data);
inorder_display(curr->rlink);
@ -114,8 +140,10 @@ void inorder_display(node *curr) {
* performs postorder traversal
* param[in] curr node pointer to the topmost node of the tree
*/
void postorder_display(node *curr) {
if (curr != NULL) {
void postorder_display(node *curr)
{
if (curr != NULL)
{
postorder_display(curr->llink);
postorder_display(curr->rlink);
printf("%d\t", curr->data);
@ -126,8 +154,10 @@ void postorder_display(node *curr) {
* performs preorder traversal
* param[in] curr node pointer to the topmost node of the tree
*/
void preorder_display(node *curr) {
if (curr != NULL) {
void preorder_display(node *curr)
{
if (curr != NULL)
{
printf("%d\t", curr->data);
preorder_display(curr->llink);
preorder_display(curr->rlink);
@ -140,22 +170,30 @@ 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) {
void delete_bt(node **root, int ele)
{
node *temp;
node *prev;
if (*root == NULL)
return;
else {
else
{
temp = *root;
prev = NULL;
// search
while (temp != NULL) {
if (temp->data == ele) {
while (temp != NULL)
{
if (temp->data == ele)
{
break;
} else if (ele > temp->data) {
}
else if (ele > temp->data)
{
prev = temp;
temp = temp->rlink;
} else {
}
else
{
prev = temp;
temp = temp->llink;
}
@ -164,32 +202,47 @@ void delete_bt(node **root, int ele) {
if (temp == NULL)
return;
else {
else
{
node *replacement; // deleted node's replacement
node *t;
if (temp->llink == NULL && temp->rlink == NULL) {
if (temp->llink == NULL && temp->rlink == NULL)
{
replacement = NULL;
} else if (temp->llink == NULL && temp->rlink != NULL) {
}
else if (temp->llink == NULL && temp->rlink != NULL)
{
replacement = temp->rlink;
} else if (temp->llink != NULL && temp->rlink == NULL) {
}
else if (temp->llink != NULL && temp->rlink == NULL)
{
replacement = temp->llink;
} else {
}
else
{
replacement = temp->rlink; // replaced with inorder successor
t = replacement;
while (t->llink != NULL) {
while (t->llink != NULL)
{
t = t->llink;
}
t->llink = temp->llink; // leftmost node of the replacement is linked to
t->llink =
temp->llink; // leftmost node of the replacement is linked to
// the left child of the deleted node
}
if (temp == *root) {
if (temp == *root)
{
free(*root);
*root = replacement;
} else if (prev->llink == temp) {
}
else if (prev->llink == temp)
{
free(prev->llink);
prev->llink = replacement;
} else if (prev->rlink == temp) {
}
else if (prev->rlink == temp)
{
free(prev->rlink);
prev->rlink = replacement;
}
@ -199,11 +252,13 @@ void delete_bt(node **root, int ele) {
/**
* main function
*/
int main() {
int main()
{
printf("BINARY THREADED TREE: \n");
node *root = NULL;
int choice, n;
do {
do
{
printf("%s\n", "1. Insert into BT");
printf("%s\n", "2. Print BT - inorder");
printf("%s\n", "3. Print BT - preorder");
@ -213,7 +268,8 @@ int main() {
printf("%s\n", "Type 0 to exit");
scanf("%d", &choice);
switch (choice) {
switch (choice)
{
case 1:
printf("%s\n", "Enter a no:");
scanf("%d", &n);

View File

@ -21,11 +21,13 @@
#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