![Programming Language Pragmatics, Fourth Edition](https://www.bartleby.com/isbn_cover_images/9780124104099/9780124104099_largeCoverImage.gif)
Explanation of Solution
C++ program for preorder iterator:
- The Example 6.69 explains how C++ use iterator () function different from Java.
- The program explains the use of pointers, references, inner classes and operator overloading.
- The tree node take the input of integer datatype.
//Defining the header files
#include <stack>
#include <iostream.h>
//Using namespace std
using namespace std;
//Defining the class tree_node
class tree_node
{
//Defining the left node variable
tree_node* left;
//Defining the right node variable
tree_node* right;
//Defining the public variable val
public:int val;
//Defining the constructor
tree_node(tree_node *l, tree_node *r, int v)
{
//assigning the value for left and right node
left = l; right = r; val = v;
}
//Defining another constructor with one parameter
tree_node(int v)
{
//Assigning value to tree node and val
left = 0; right = 0; val = v;
}
//Defining the inner class
class iterator
{
//Defining the variable with reference
stack<tree_node*> *s;
tree_node *cur;
//Defining the constructor for iterator as public
public:iterator(tree_node& n)
{
//Defining a stack to store the tree
s = new stack<tree_node*>();
//Assigning current value to n
cur = &n;
//Checking current position
if (cur)
{
//If current position in right side then push the element to the stack
if (cur->right) s->push(cur->right);
//If current position in left side then push the element to the stack
if (cur->left) s->push(cur->left);
}
}
//Destructor for iterator
~iterator()
{
//Deleting the stack
delete s;
}
//Checking current position with pointer
bool operator!=(void *p) const
{
//Return statement if current!=0
return (cur != 0);
}
//Use of reference
iterator& operator++()
{
//if condition for checking the stack is empty or not
if (s->empty())
{
//if stack is empty then it assign the current position to 0
cur = 0;
}
//If stack is not empty
else
{
//The current position value points to top of the stack
cur = s->top();
//use of pop() method
s->pop();
if (cur)
{
//Pushing the right element to stack
if (cur->right) s->push(cur->right);
//Pushing the right element to stack
if (cur->left) s->push(cur->left);
}
}
//returning the object
return *this;
}
//operator method using reference
int& operator*() const
{
//it return the current position as val
return cur->val;
}
//operator method pointers
int* operator->() const
{
//it return the current position as val
return &(cur->val);
}
};
//Defining the begin method of iterator which uses reference method
iterator& begin()
{
//Creating a new pointer i
iterator *i = new iterator(*this);
//Returing the pointer i
return *i;
}
//End method
void *end()
{
//which return 0
return 0;
}
};
Explanation:
- The program creates a class “tree_node” which is used to get the left and right nodes of the tree.
- The “tree_node” class used constructors to create the tree.
- Then the program creates an inner class with the name of “iterator”, which incorporates the reference, operator overloading, and pointers method.
- It creates a stack and pushing the elements to the stack based on current position of the variable.
Want to see more full solutions like this?
Chapter 6 Solutions
Programming Language Pragmatics, Fourth Edition
- After the FCC licensing freeze was lifted, sitcoms featuring urban settings and working class characters became far less common. Question 14 options: True Falsearrow_forwardsolve this questions for me .arrow_forwarda) first player is the minimizing player. What move should be chosen?b) What nodes would not need to be examined using the alpha-beta pruning procedure?arrow_forward
- Consider the problem of finding a path in the grid shown below from the position S to theposition G. The agent can move on the grid horizontally and vertically, one square at atime (each step has a cost of one). No step may be made into a forbidden crossed area. Inthe case of ties, break it using up, left, right, and down.(a) Draw the search tree in a greedy search. Manhattan distance should be used as theheuristic function. That is, h(n) for any node n is the Manhattan distance from nto G. The Manhattan distance between two points is the distance in the x-directionplus the distance in the y-direction. It corresponds to the distance traveled along citystreets arranged in a grid. For example, the Manhattan distance between G and S is4. What is the path that is found by the greedy search?(b) Draw the search tree in an A∗search. Manhattan distance should be used as thearrow_forwardwhats for dinner? pleasearrow_forwardConsider the follow program that prints a page number on the left or right side of a page. Define and use a new function, isEven, that returns a Boolean to make the condition in the if statement easier to understand. ef main() : page = int(input("Enter page number: ")) if page % 2 == 0 : print(page) else : print("%60d" % page) main()arrow_forward
- What is the correct python code for the function def countWords(string) that will return a count of all the words in the string string of workds that are separated by spaces.arrow_forwardConsider the following program that counts the number of spaces in a user-supplied string. Modify the program to define and use a function, countSpaces, instead. def main() : userInput = input("Enter a string: ") spaces = 0 for char in userInput : if char == " " : spaces = spaces + 1 print(spaces) main()arrow_forwardWhat is the python code for the function def readFloat(prompt) that displays the prompt string, followed by a space, reads a floating-point number in, and returns it. Here is a typical usage: salary = readFloat("Please enter your salary:") percentageRaise = readFloat("What percentage raise would you like?")arrow_forward
- assume python does not define count method that can be applied to a string to determine the number of occurances of a character within a string. Implement the function numChars that takes a string and a character as arguments and determined and returns how many occurances of the given character occur withing the given stringarrow_forwardConsider the ER diagram of online sales system above. Based on the diagram answer the questions below, a) Based on the ER Diagram, determine the Foreign Key in the Product Table. Just mention the name of the attribute that could be the Foreign Key. b) Mention the relationship between the Order and Customer Entities. You can use the following: 1:1, 1:M, M:1, 0:1, 1:0, M:0, 0:M c) Is there a direct relationship that exists between Store and Customer entities? Answer Yes/No? d) Which of the 4 Entities mention in the diagram can have a recursive relationship? e) If a new entity Order_Details is introduced, will it be a strong entity or weak entity? If it is a weak entity, then mention its type?arrow_forwardNo aiarrow_forward
- 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
![Text book image](https://www.bartleby.com/isbn_cover_images/9780078022159/9780078022159_smallCoverImage.jpg)
![Text book image](https://www.bartleby.com/isbn_cover_images/9780134444321/9780134444321_smallCoverImage.gif)
![Text book image](https://www.bartleby.com/isbn_cover_images/9780132737968/9780132737968_smallCoverImage.gif)
![Text book image](https://www.bartleby.com/isbn_cover_images/9780133976892/9780133976892_smallCoverImage.gif)
![Text book image](https://www.bartleby.com/isbn_cover_images/9781337627900/9781337627900_smallCoverImage.gif)
![Text book image](https://www.bartleby.com/isbn_cover_images/9780073373843/9780073373843_smallCoverImage.gif)