Explanation of Solution
Employing the functions to complete the Example 6.73:
- The Example 6.73 explains about imitating the iterators in C.
- In that example, they decouple the enumeration of a collection from original use of elements by taking appropriate
programming conventions. - There are two differences between the codes.
-
- ○ The syntax of the loop is good and elegant.
- ○ The iterator is simply a type and some associated functions, C gives no abstraction technique to group them together as a class.
- The following program expands the Example 6.73 with the code for “tree_iter type (struct)” and “ti_create”, “ti_done”, “ti_next”, “ti_val”, and “ti_delete” functions.
Program:
//Defining structure to the tree node
typedef struct tree_node
{
//Defining the value in data
data val;
//Defining left and right node using pointers
struct tree_node *left, *right;
} tree_node;
/* a tree_iter contains a list-based stack of
tree_nodes (subtrees) that have yet to be visited */
//Defining the structure for list_ node
typedef struct list_node
{
//Defining the tree_node
tree_node *tn;
//Defining the list_node
struct list_node *next;
} list_node;
//Defining the structure for list_node and tree_iter
typedef list_node *tree_iter;
/*Defining the push method which push the element to the stack based on pointers*/
void ti_push(tree_node *n, tree_iter *tp)
{
if (n)
{
list_node *t = *tp;
*tp = (tree_iter) malloc(sizeof(list_node));
(*tp)->tn = n; (*tp)->next = t;
}
}
/* Creating the tree with tree_node and tree_iter creates assigns 0 to push element*/
void ti_create(tree_node *root, tree_iter *tp)
{
*tp = 0;
ti_push(root, tp);
}
//If adding the element to list is finished, it retruns the ti...
Want to see the full answer?
Check out a sample textbook solutionChapter 6 Solutions
Programming Language Pragmatics, Fourth Edition
- Database System ConceptsComputer ScienceISBN:9780078022159Author:Abraham Silberschatz Professor, Henry F. Korth, S. SudarshanPublisher:McGraw-Hill EducationStarting Out with Python (4th Edition)Computer ScienceISBN:9780134444321Author:Tony GaddisPublisher:PEARSONDigital Fundamentals (11th Edition)Computer ScienceISBN:9780132737968Author:Thomas L. FloydPublisher:PEARSON
- C How to Program (8th Edition)Computer ScienceISBN:9780133976892Author:Paul J. Deitel, Harvey DeitelPublisher:PEARSONDatabase Systems: Design, Implementation, & Manag...Computer ScienceISBN:9781337627900Author:Carlos Coronel, Steven MorrisPublisher:Cengage LearningProgrammable Logic ControllersComputer ScienceISBN:9780073373843Author:Frank D. PetruzellaPublisher:McGraw-Hill Education