Trees
- Tree.h
- TreeElement.h
- Ops.c, basic tree operations.
- Write.c, display a tree.
- Infix.c, tree traversal.
- Prefix.c
- Postfix.c
- BFirst.c, breadth first (see queue).
- Insert.c, binary search (sort) tree insertion.
- Parser.h
- Parser.c, simple parser of expressions.
- Queue.h, for BF above.
- QueueElement.h
- QueueOps.c
- driverParser.c, driver for parser.
- driverSortTree, driver for sort trees.
Compilation
An easy way to compile and run:
Copy all `.c' and `.h' files into a clean Unix/Linux directory (folder).
gcc *.c
./a.out
Procedure Formal Parameters
Some of the procedures in this directory
have procedure formal parameters,
i.e. parameters that are themselves procedures
such as process
below:
void infix(Tree T, void process(TreeElementType)) /* NB. process is a procedure formal parameter. */ { if( T != NULL ) { infix( T->left, process ); process(T->elt); infix( T->right, process ); } }/*infix*/ /* Infix Tree Traversal. */
infix
traverses a Tree in infix order and carries out
some process
operation on each Tree Element.
A process
operation must be provided as a
procedure actual parameter when infix
is called,
just as some Tree actual parameter must be provided for
the Tree formal parameter T
.
The actual parameters are substituted for the formal parameters when
infix
is called.
e.g.
void PrintElt(TreeElementType e) { printf("%s ", e); } ... infix(someTree, PrintElt); /* call infix */ /* PrintElt is the procedure actual parameter */
infix
can be called with
many different actual parameters.
Procedure parameters are implemented, by the compiler,
as pointers to the code of routines.
Procedure formal parameters are particularly useful in the parser.