diff --git a/Stack/Stack.cc b/Stack/Stack.cc index 15ee7e5..a87d8b2 100644 --- a/Stack/Stack.cc +++ b/Stack/Stack.cc @@ -1,57 +1,26 @@ +//Stack.cc #include -using namespace std ; +#include "Stack.hh" -const int LEN = 80 ; // default stack length - -struct Stack { - // Implementation - double s[LEN] ; - int count ; - - // Interface - void init() { count = 0 ; } - int nitems() { return count ; } - bool full() { return (count==LEN) ; } - bool empty() { return (count==0) ; } - - void push(double c) { - if (full()) { - cout << "Stack::push() Error: stack is full" << endl ; - return ; - } - s[count++] = c ; - } - - double pop() { - if (empty()) { - cout << "Stack::pop() Error: stack is empty" << endl ; - return 0 ; - } - return s[--count] ; - } -} ; - - -int main() { - - Stack s ; - s.init() ; // initialize Stack - - // Write doubles into Stack - int i ; - for (i=0 ; i<10 ; i++) { - cout << "pushing value " << i*i << " in stack" << endl ; - s.push(i*i) ; - } - - // Count doubles in fifo - cout << s.nitems() << " value in stack" << endl ; - - // Read doubles back from fifo - while (!s.empty()) { - double val = s.pop() ; - cout << "popping value " << val << " from stack" << endl ; - } - - return 0 ; +void Stack::push(double c) { + if (full()) { + std::cout << "Stack::push() Error: stack is full" << std::endl ; + return ; + } + s[count++] = c ; +} + +double Stack::pop() { + if (empty()) { + std::cout << "Stack::pop() Error: stack is empty" << std::endl ; + return 0 ; + } + return s[--count] ; +} + +void Stack::inspect() { + for ( int i = nitems() - 1; i >= 0; i-- ) + { + std::cout << i << ": " << s[i] << std::endl; + } } diff --git a/Stack/Stack.hh b/Stack/Stack.hh new file mode 100644 index 0000000..1cae03e --- /dev/null +++ b/Stack/Stack.hh @@ -0,0 +1,27 @@ +//Stack.h + +#ifndef STACK_H +#define STACK_H + +const int LEN = 80 ; // default stack length +class Stack { + // Interface + public: + Stack() { init(); } + ~Stack() {} + int nitems() { return count ; } + bool full() { return (count==LEN) ; } + bool empty() { return (count==0) ; } + + void push( double c ); + double pop(); + void inspect(); + + // Implementation + private: + void init() { count = 0 ; } + double s[LEN] ; + int count ; + +}; +#endif