7-18 银行业务队列简单模拟 (25分)

你离开我真会死。 提交于 2020-03-01 16:20:25

挺简单的用队列求解的一题,难度不大。

输出格式要注意。

  1 #include <iostream>
  2 #include <string>
  3 #include <cstring>
  4 using namespace std;
  5 
  6 class queue_
  7 {
  8 public:
  9     queue_() :f(-1), r(-1)
 10     {
 11         memset(s, 0, 10000 * sizeof(int));
 12     }
 13     ~queue_() {}
 14     void push(int i)
 15     {
 16         s[++r] = i;
 17     }
 18     int pop()
 19     {
 20         return s[++f];
 21     }
 22 public:
 23     int f;
 24     int r;
 25     int s[10000];
 26 };
 27 
 28 void print_(queue_ a, queue_ b)
 29 {
 30     while (a.r != a.f && b.r != b.f)
 31     {
 32         if (a.f < a.r)
 33         {
 34             if(a.f + 1==a.r && b.f==b.r)
 35             cout << a.pop();
 36             else
 37             cout << a.pop() << " ";
 38         }
 39         else
 40         {
 41             break;
 42         }
 43         if (a.f < a.r )
 44         {
 45             if(a.f + 1== a.r && b.f==b.r)
 46             cout << a.pop();
 47             else
 48             cout << a.pop() << " ";
 49         }
 50         else
 51         {
 52             break;
 53         }
 54         if (b.f < b.r)
 55         {
 56             if(b.f + 1== b.r && a.f==a.r)
 57             cout << b.pop();
 58             else
 59             cout << b.pop() << " ";
 60         }
 61         else
 62         {
 63             break;
 64         }
 65     }
 66     if (a.f >= a.r)
 67     {
 68         while (b.f < b.r)
 69         {
 70             if(b.f + 1== b.r)
 71             cout << b.pop();
 72             else
 73             cout << b.pop() << " ";
 74         }
 75     }
 76     else
 77     {
 78         while (a.f < a.r)
 79         {
 80             if(a.f + 1== a.r)
 81             cout << a.pop();
 82             else
 83             cout << a.pop() << " ";
 84         }
 85     }
 86 }
 87 int main()
 88 {
 89     int n;
 90     queue_ a, b;
 91     cin >> n;
 92     for (int i = 0; i < n; i++)
 93     {
 94         int temp;
 95         cin >> temp;
 96         if (temp % 2 == 0)
 97         {
 98             b.push(temp);
 99         }
100         else
101         {
102             a.push(temp);
103         }
104 
105     }
106     print_(a, b);
107     return 0;
108 }

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!