/*
 * This is a simple post-fix expression evaluator.  (I needed to exercise the
 * our latest stack, and got tired of completely meaningless stack 
 * manipulation.)  Input is integers, operators +, -, *, /, or the period
 * character as an end marker.  This is evaluated as a postfix expression 
 * with minimal error checking.
 */
#include <iostream>
#include <cctype>
#include <string>
#include "lnkstack.h"
using namespace std;
int main()
{
        // Stack of integers.
        Stack<int> is;
        // Read the input.
        char op;
        while(cin >> op) {
                // See what we got.
                if(op == '.') {
                        // Halt char.
                        break;
                } else if(isdigit(op)) {
                        // Digit.  Unget it, read the number, and push it
                        // on the stack.
                        cin.unget();
                        int val;
                        cin >> val;
                        is.push(val);
                        continue;
                } else if(string("+-*/").find(op) != string::npos) {
                        // Operator, pop the operands.
                        int a,b;
                        if(!is.pop(b)) break;
                        if(!is.pop(a)) break;
                        // Push the operation result in place of the operands.
                        switch(op)
                                {
                                case '+':
                                        is.push(a+b);
                                        break;
                                case '-':
                                        is.push(a-b);
                                        break;
                                case '*':
                                        is.push(a*b);
                                        break;
                                case '/':
                                        is.push(a/b);
                                        break;
                                }
                } else {
                        // Just what it says.
                        cout << "Bad char " << op << endl;
                }
        }
        // If there's a result, print it.  If the stack is empty, just
        // whine about it.
        int res;
        if(is.pop(res))
                cout << "Value: " << res << endl;
        cout << "Stack has " << is.size() << " elements at exit." << endl;
}
We will use this driver for all the stacks in this section.  The
    	     
#include will have to change, but I won't post them all