Programming Language Pragmatics, Fourth Edition
Programming Language Pragmatics, Fourth Edition
4th Edition
ISBN: 9780124104099
Author: Michael L. Scott
Publisher: Elsevier Science
Expert Solution & Answer
Book Icon
Chapter 6, Problem 20E

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.
    1. ○ The syntax of the loop is good and elegant.
    2. ○ 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...

Blurred answer
Knowledge Booster
Background pattern image
Recommended textbooks for you
Text book image
Database System Concepts
Computer Science
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:McGraw-Hill Education
Text book image
Starting Out with Python (4th Edition)
Computer Science
ISBN:9780134444321
Author:Tony Gaddis
Publisher:PEARSON
Text book image
Digital Fundamentals (11th Edition)
Computer Science
ISBN:9780132737968
Author:Thomas L. Floyd
Publisher:PEARSON
Text book image
C How to Program (8th Edition)
Computer Science
ISBN:9780133976892
Author:Paul J. Deitel, Harvey Deitel
Publisher:PEARSON
Text book image
Database Systems: Design, Implementation, & Manag...
Computer Science
ISBN:9781337627900
Author:Carlos Coronel, Steven Morris
Publisher:Cengage Learning
Text book image
Programmable Logic Controllers
Computer Science
ISBN:9780073373843
Author:Frank D. Petruzella
Publisher:McGraw-Hill Education