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
Students have asked these similar questions
Whentheuserenters!!,themostrecentcommandinthehistoryisexecuted.In the example above, if the user entered the command: Osh> !! The ‘ls -l’ command should be executed and echoed on user’s screen. The command should also be placed in the history buffer as the next command. Whentheuserentersasingle!followedbyanintegerN,theNthcommandin the history is executed. In the example above, if the user entered the command: Osh> ! 3 The ‘ps’ command should be executed and echoed on the user’s screen. The command should also be placed in the history buffer as the next command. Error handling: The program should also manage basic error handling. For example, if there are no commands in the history, entering !! should result in a message “No commands in history.” Also, if there is no command corresponding to the number entered with the single !, the program should output "No such command in history."
Activity No. Activity Time (weeks) Immediate Predecessors 1 Requirements collection 3 2 Requirements structuring 4 1 3 Process analysis 3 2 4 Data analysis 3 2 5 Logical design 50 3,4 6 Physical design 5 5 7 Implementation 6 6 c. Using the information from part b, prepare a network diagram. Identify the critical path.
2. UNIX Shell and History Feature [20 points] This question consists of designing a C program to serve as a shell interface that accepts user commands and then executes each command in a separate process. A shell interface gives the user a prompt, after which the next command is entered. The example below illustrates the prompt osh> and the user's next command: cat prog.c. The UNIX/Linux cat command displays the contents of the file prog.c on the terminal using the UNIX/Linux cat command and your program needs to do the same. osh> cat prog.c The above can be achieved by running your shell interface as a parent process. Every time a command is entered, you create a child process by using fork(), which then executes the user's command using one of the system calls in the exec() family (as described in Chapter 3). A C program that provides the general operations of a command-line shell can be seen below. #include #include #define MAX LINE 80 /* The maximum length command */ { int…
Knowledge Booster
Background pattern image
Similar questions
SEE MORE QUESTIONS
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