Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "pwa-chrome",
"request": "launch",
"name": "Launch Chrome against localhost",
"url": "http://localhost:8080",
"webRoot": "${workspaceFolder}"
}
]
}
43 changes: 43 additions & 0 deletions Basic C Programs/BinarySearchTree/BinarySearchTree.cbp
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<CodeBlocks_project_file>
<FileVersion major="1" minor="6" />
<Project>
<Option title="BinarySearchTree" />
<Option pch_mode="2" />
<Option compiler="gcc" />
<Build>
<Target title="Debug">
<Option output="bin/Debug/BinarySearchTree" prefix_auto="1" extension_auto="1" />
<Option object_output="obj/Debug/" />
<Option type="1" />
<Option compiler="gcc" />
<Compiler>
<Add option="-g" />
</Compiler>
</Target>
<Target title="Release">
<Option output="bin/Release/BinarySearchTree" prefix_auto="1" extension_auto="1" />
<Option object_output="obj/Release/" />
<Option type="1" />
<Option compiler="gcc" />
<Compiler>
<Add option="-O2" />
</Compiler>
<Linker>
<Add option="-s" />
</Linker>
</Target>
</Build>
<Compiler>
<Add option="-Wall" />
</Compiler>
<Unit filename="main.c">
<Option compilerVar="CC" />
</Unit>
<Extensions>
<code_completion />
<envvars />
<debugger />
</Extensions>
</Project>
</CodeBlocks_project_file>
6 changes: 6 additions & 0 deletions Basic C Programs/BinarySearchTree/BinarySearchTree.depend
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# depslib dependency file v1.0
1574915131 source:f:\cprograms\binarysearchtree\main.c
<stdio.h>
<stdlib.h>
<stdbool.h>

27 changes: 27 additions & 0 deletions Basic C Programs/BinarySearchTree/BinarySearchTree.layout
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<CodeBlocks_layout_file>
<FileVersion major="1" minor="0" />
<ActiveTarget name="Debug" />
<File name="main.c" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="1" zoom_2="0">
<Cursor>
<Cursor1 position="5544" topLine="71" />
</Cursor>
<Folding>
<Collapse line="6" />
<Collapse line="12" />
<Collapse line="36" />
<Collapse line="50" />
<Collapse line="68" />
<Collapse line="86" />
<Collapse line="102" />
<Collapse line="157" />
<Collapse line="166" />
<Collapse line="182" />
<Collapse line="189" />
<Collapse line="201" />
<Collapse line="207" />
<Collapse line="221" />
<Collapse line="227" />
</Folding>
</File>
</CodeBlocks_layout_file>
249 changes: 249 additions & 0 deletions Basic C Programs/BinarySearchTree/main.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,249 @@
#include <stdio.h>
#include <stdlib.h>
#include<stdbool.h>

//Structure Declarations
typedef struct node
{
void * dataptr;
struct node *left,*right;
}NODE;

typedef struct
{
int count;
int (*compare)(void *argu1, void* argu2);
NODE *root;
}BST_TREE;

//Prototype Declarations
BST_TREE *BST_Create (int (*compare)(void *argu1,void *argu2));
BST_TREE *BST_Destroy(BST_TREE *tree);
bool BST_Insert(BST_TREE*tree,void*dataptr);
bool BST_Delete(BST_TREE *tree,void *dltkey);
bool BST_Empty(BST_TREE *tree);
bool BST_Full(BST_TREE *tree);
int BST_Count(BST_TREE *tree);
void BST_Traverse(BST_TREE *tree, void(*process)(void*dataptr));
void *BST_Retrieve(BST_TREE *tree, void *keyptr);
static void _traverse(NODE *root, void(*process)(void *dataptr));
static void _destroy(NODE *root);
static void *_retrieve(BST_TREE *tree, void *dataptr, NODE *root);
static NODE* _insert(BST_TREE*tree, NODE*root, NODE*newptr);
static NODE* _delete(BST_TREE* tree, NODE*root, void*dataptr, bool *success);

//Create BST
BST_TREE *BST_Create(int (*compare)(void *argu1,void *argu2))
{
BST_TREE *tree;
tree=(BST_TREE*)malloc(sizeof(BST_TREE));
if(tree)
{
tree->root=NULL;
tree->count=0;
tree->compare=compare;
}
return tree;
}

//Insert BST
bool BST_Insert(BST_TREE*tree,void*dataptr)
{
NODE *newptr;
newptr=(NODE*)malloc(sizeof(NODE));
if(!newptr)
return false;
newptr->right=NULL;
newptr->left=NULL;
newptr->dataptr=dataptr;
if(tree->count==0)
tree->root=newptr;
else
_insert(tree,tree->root,newptr);
(tree->count)++;
return true;
}

//INTERNAL insert
NODE *_insert(BST_TREE*tree, NODE*root, NODE*newptr)
{
if(!root)
return newptr;
if(tree->compare(newptr->dataptr,root->dataptr)<0)
{
root->left=_insert(tree,root->left,newptr);
return root;
}
else
{
root->right=_insert(tree,root->right,newptr);
return root;
}
return root;
}

//Delete
bool BST_Delete(BST_TREE *tree,void *dltkey)
{
bool success;
NODE*newroot;
newroot=_delete(tree,tree->root,dltkey,&success);
if(success)
{
tree->root=newroot;
(tree->count)--;
if(tree->count==0)
tree->root=NULL;
}
return success;
}

//INTERNAL Delete
NODE *_delete(BST_TREE* tree, NODE*root, void*dataptr, bool *success)
{
NODE*dltptr;
NODE*exchptr;
NODE*newroot;
void* holdptr;

if(!root)
{
*success=false;
return NULL;
}
if(!root)
{
*success=false;
return NULL;
}
if(tree->compare(dataptr,root->dataptr)<0)
root->left=_delete(tree,root->left,dataptr,success);
else if(tree->compare(dataptr,root->dataptr)>0)
root->right=_delete(tree,root->right,dataptr,success);
else
{
dltptr=root;
if(!root->left)
{
free(root->dataptr);
newroot=root->right;
free(dltptr);
*success=true;
return newroot;
}
else if(!root->right)
{
newroot=root->left;
free(dltptr);
*success=true;
return newroot;
}
else
{
exchptr=root->left;
while(exchptr->right)
exchptr=exchptr->right;

holdptr=root->dataptr;
root->dataptr=exchptr->dataptr;
exchptr->dataptr=holdptr;
root->left=_delete(tree,root->left,exchptr->dataptr,success);
}
}
return root;
}

//Retrieve BST
void *BST_Retrieve(BST_TREE *tree, void *keyptr)
{
if(tree->root)
return _retrieve(tree, keyptr, tree->root);
else
return NULL;
}

//INTERNAL Retrieve
void *_retrieve(BST_TREE *tree, void *dataptr, NODE *root)
{
if(root)
{
if(tree->compare(dataptr, root->dataptr)<0)
return _retrieve(tree, dataptr, root->right);
else if(tree->compare(dataptr,root->dataptr)>0)
return _retrieve(tree, dataptr, root->left);
else
return root->dataptr;
}
else
return NULL;
}

//Traverse BST
void BST_Traverse(BST_TREE *tree, void(*process)(void*dataptr))
{
_traverse(tree->root, process);
return;
}

//INTERNAL Traverse
void _traverse(NODE *root, void(*process)(void *dataptr))
{
if(root)
{
_traverse(root->left, process);
process(root->dataptr);
_traverse(root->right, process);
}
return;
}

//Empty BST
bool BST_Empty(BST_TREE *tree)
{
return(tree->count==0);
}

//Full BST
bool BST_Full(BST_TREE *tree)
{
NODE *newptr;
newptr=(NODE*)malloc(sizeof(*(tree->root)));
if(newptr)
{
free(newptr);
return false;
}
else
return true;
}

//Count BST
int BST_Count(BST_TREE *tree)
{
return (tree->count);
}

//Destroy BST
BST_TREE *BST_Destroy(BST_TREE *tree)
{
if(tree)
_destroy(tree->root);
free(tree);
return NULL;
}

//INTERNAL Destroy
void _destroy(NODE *root)
{
if(root)
{
_destroy(root->left);
free(root->dataptr);
_destroy(root->right);
free(root);
}
return;
}



Binary file not shown.
43 changes: 43 additions & 0 deletions Basic C Programs/alpha-singlylinkedlist/alpha-singlylinkedlist.cbp
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<CodeBlocks_project_file>
<FileVersion major="1" minor="6" />
<Project>
<Option title="alpha-singlylinkedlist" />
<Option pch_mode="2" />
<Option compiler="gcc" />
<Build>
<Target title="Debug">
<Option output="bin/Debug/alpha-singlylinkedlist" prefix_auto="1" extension_auto="1" />
<Option object_output="obj/Debug/" />
<Option type="1" />
<Option compiler="gcc" />
<Compiler>
<Add option="-g" />
</Compiler>
</Target>
<Target title="Release">
<Option output="bin/Release/alpha-singlylinkedlist" prefix_auto="1" extension_auto="1" />
<Option object_output="obj/Release/" />
<Option type="1" />
<Option compiler="gcc" />
<Compiler>
<Add option="-O2" />
</Compiler>
<Linker>
<Add option="-s" />
</Linker>
</Target>
</Build>
<Compiler>
<Add option="-Wall" />
</Compiler>
<Unit filename="main.c">
<Option compilerVar="CC" />
</Unit>
<Extensions>
<code_completion />
<envvars />
<debugger />
</Extensions>
</Project>
</CodeBlocks_project_file>
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# depslib dependency file v1.0
1573855023 source:f:\cprograms\alpha-singlylinkedlist\main.c
<stdio.h>
<stdlib.h>

Loading