mirror of
https://github.com/Hizenberg469/C1-Linux_SYS_Prog-AS-.git
synced 2026-04-20 02:42:23 +03:00
Make a habit to use Iterative Macro for iterating Data Structure
This commit is contained in:
58
Iterative_macros/tree.h
Normal file
58
Iterative_macros/tree.h
Normal file
@@ -0,0 +1,58 @@
|
||||
/*
|
||||
* =====================================================================================
|
||||
*
|
||||
* Filename: tree.h
|
||||
*
|
||||
* Description:
|
||||
*
|
||||
* Version: 1.0
|
||||
* Created: 05/02/24 09:52:32 PM IST
|
||||
* Revision: none
|
||||
* Compiler: gcc
|
||||
*
|
||||
* Author: YOUR NAME (),
|
||||
* Organization:
|
||||
*
|
||||
* =====================================================================================
|
||||
*/
|
||||
|
||||
#ifndef __TREE__
|
||||
#define __TREE__
|
||||
|
||||
typedef struct tree_node {
|
||||
struct tree_node *left;
|
||||
struct tree_node *right;
|
||||
struct tree_node *parent;
|
||||
int data;
|
||||
} tree_node_t;
|
||||
|
||||
|
||||
typedef struct tree {
|
||||
tree_node_t *root;
|
||||
} tree_t;
|
||||
|
||||
int
|
||||
add_tree_node_by_value(tree_t *tree, int n);
|
||||
|
||||
tree_t* init_tree(void);
|
||||
|
||||
tree_node_t* init_tree_node(int n);
|
||||
|
||||
/*Pre-requisites functions to write iterative
|
||||
* macros for a tree.*/
|
||||
|
||||
tree_node_t *
|
||||
get_left_most (tree_node_t *node);
|
||||
|
||||
tree_node_t *
|
||||
get_next_inorder_succ (tree_node_t *node);
|
||||
|
||||
#define ITERATE_BST_BEGIN(treeptr, currentnodeptr) \
|
||||
{ \
|
||||
tree_node_t *_next = NULL; \
|
||||
for(currentnodeptr = get_left_most(treeptr->root); currentnodeptr != NULL ; currentnodeptr = _next){ \
|
||||
_next = get_next_inorder_succ(currentnodeptr);
|
||||
|
||||
#define ITERATE_BST_END }}
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user