stckoptr1.cpp 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. // stkoptr1.cpp -- testing stack of pointers
  2. #include <iostream>
  3. #include <cstdlib> // for rand(), srand()
  4. #include <ctime> // for time()
  5. #include "stcktp1.h"
  6. const int Num = 10;
  7. int main()
  8. {
  9. std::srand(std::time(0)); // randomize rand()
  10. std::cout << "Please enter stack size: ";
  11. int stacksize;
  12. std::cin >> stacksize;
  13. // create an empty stack with stacksize slots
  14. Stack<const char *> st(stacksize);
  15. // in basket
  16. const char * in[Num] = {
  17. " 1: Hank Gilgamesh", " 2: Kiki Ishtar",
  18. " 3: Betty Rocker", " 4: Ian Flagranti",
  19. " 5: Wolfgang Kibble", " 6: Portia Koop",
  20. " 7: Joy Almondo", " 8: Xaverie Paprika",
  21. " 9: Juan Moore", "10: Misha Mache"
  22. };
  23. // out basket
  24. const char * out[Num];
  25. int processed = 0;
  26. int nextin = 0;
  27. while (processed < Num)
  28. {
  29. if (st.isempty())
  30. st.push(in[nextin++]);
  31. else if (st.isfull())
  32. st.pop(out[processed++]);
  33. else if (std::rand() % 2 && nextin < Num) // 50-50 chance
  34. st.push(in[nextin++]);
  35. else
  36. st.pop(out[processed++]);
  37. }
  38. for (int i = 0; i < Num; i++)
  39. std::cout << out[i] << std::endl;
  40. std::cout << "Bye\n";
  41. // std::cin.get();
  42. // std::cin.get();
  43. return 0;
  44. }