Overview: The stack.cpp file contains three classes, Node, List, and Stack, which together create a simple stack object that can be used to store and retrieve data. There is also a simple main() function which creates a stack, pushes some values onto it, and then pops and prints them. Compilation: This code has been shown to compile using g++ 3.2.3 on Windows XP Professional SP2, and should compile equally well on Linux using the same (or newer) version of g++. It should also compile in MS Visual Studio, but this has not been tested or verified. When using g++, the invocation is "g++ graph.cpp". Usage: In its current state, the code requires no user-interaction. If compiled with the above command, the program may then be run by typing "a.exe" (on Windows), or "./a.out" (on Linux). You will then see some information printed to your console, and the program will terminate. Specifications: The Stack class (which is the only provided class that should need to be utilized directly) manages a linked-list of strings. It provides the standard push(), pop(), and peek() methods for storing and retrieving data. The push() function takes as aparamater a string, and pushes it on top of the stack. The pop() and peek() functions both return the string that happens to be at the top of the stack, with the difference between the two being that peek() does not remove it from the stack, while pop() does. Although the calculator project requires 3 stacks of different type, one for characters (the parenthesis stack), one for integers (the value stack), and one for strings (the operator stack), it is possible to use a string stack in each instance and still produce a correct implementation. If you want to however, it should not be too difficult to modify the Node class so that it supports any data type (by making it a template class). Some minor changes will also be necessary to the Stack class and the List class. Note however that this change is not necessary at all in order to correctly implement the project. It should also be noted that while functional, none of these classes should be considered to be 'perfect,' and each one could use a little bit of improvement. For example, template classes could be used to make the code more reusable, and none of the List/Node/Stack classes contain print() methods. However, the provided classes should be adequate for completing the calculator project if you do not have your own variants and/or if you do not want to use the STL stack class. The existing code in main() creates an empty stack and the pushes some test strings to it. It then proceeds to pop() and peek() from the stack, printing output as it goes. The comments in the main() function in stack.cpp describe what output should be generated by this test sequence, but for the sake of convenience, it should print: 3 2 2 2 1 NULL done For easier distribution and compilation, the code for both classes and the main() program is in a single monolithic file. You may wish to break it up into smaller files once you have it on your PC, but this is at your discretion. Known Issues: Aside from the aforementioned limitations, there are none, although it should be noted that these classes have *not* been thoroughly tested.