home *** CD-ROM | disk | FTP | other *** search
/ Reverse Code Engineering RCE CD +sandman 2000 / ReverseCodeEngineeringRceCdsandman2000.iso / RCE / Ebooks / Thinking in C++ V2 / C16 / Stackt.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2000-05-25  |  931 b   |  40 lines

  1. //: C16:Stackt.cpp
  2. // From Thinking in C++, 2nd Edition
  3. // Available at http://www.BruceEckel.com
  4. // (c) Bruce Eckel 1999
  5. // Copyright notice in Copyright.txt
  6. // Test simple stack template
  7. #include "Stackt.h"
  8. #include "../require.h"
  9. #include <iostream>
  10. using namespace std;
  11.  
  12. // For interest, generate Fibonacci numbers:
  13. int fibonacci(int n) {
  14.   const int sz = 100;
  15.   require(n < sz);
  16.   static int f[sz]; // Initialized to zero
  17.   f[0] = f[1] = 1;
  18.   // Scan for unfilled array elements:
  19.   int i;
  20.   for(i = 0; i < sz; i++)
  21.     if(f[i] == 0) break;
  22.   while(i <= n) {
  23.     f[i] = f[i-1] + f[i-2];
  24.     i++;
  25.   }
  26.   return f[n];
  27. }
  28.  
  29. int main() {
  30.   Stackt<int> is;
  31.   for(int i = 0; i < 20; i++)
  32.     is.push(fibonacci(i));
  33.   // Traverse with an iterator:
  34.   StacktIter<int> it(is);
  35.   for(int j = 0; j < 20; j++)
  36.     cout << it++ << endl;
  37.   for(int k = 0; k < 20; k++)
  38.     cout << is.pop() << endl;
  39. } ///:~
  40.