7-6 队列模拟 (10 分)

7-6 队列模拟 (10 分)

设从键盘输入一整数序列a1,a2,…an,试编程实现:当ai>0 时,ai 进队,当ai<0 时,将队首元素出队,当ai=0 时,表示输入结束。要求将队列处理成环形队列,使用环形队列算法库中定义的数据类型及算法,程序中只包括一个函数(main 函数),入队和出队等操作直接在main 函数中调用即可。当进队出队异常(如队满)时,要打印出错信息。

输入格式:

输入一系列整数,以0结束。环形队列最多可存储10个元素。

输出格式:

输出最后队列中的元素。如果队列满,则显示“队列已满”,如果出队列时无元素可出,显示“wrong”

样例

输入样例1:

在这里给出一组输入。例如:

1 2 3 -4 -5 6 7 -8 0

输出样例1:

在这里给出相应的输出。例如:

The Queue is:6 7

输入样例2:

在这里给出一组输入。例如:

1 2 -4 -5 -6 7 -8 0

输出样例2:

在这里给出相应的输出。例如:

wrong

输入样例3:

在这里给出一组输入。例如:

1 2 3 4 5 6 7 8 9 10 11 12 0

输出样例3:

在这里给出相应的输出。例如:

Queue is full!
The Queue is:1 2 3 4 5 6 7 8 9 10

题解

#include <iostream>
#include <stdio.h>
#include <vector>
#include <string>
using namespace std;
int main()
{
    vector<int> fir;
    int an,sum=0;
    while(cin>>an){
        if(an==0){
            if(sum==0)
                cout<<"wrong"<<endl;
            else{
                if (sum==10)
                    cout << "Queue is full!"<<endl;
                cout << "The Queue is:";
                for(int i=0;i<sum;i++){
                    cout<<fir[i]<<" ";
                }
            }
        }
        if(an<0){
            if(sum==0){}
            else{
                fir.erase(fir.begin(), fir.begin() + 1);
                sum--;
            }
        }
        if(an>0){
            if(sum==10){}
            else{
                fir.push_back(an);
                sum++;
            }
        }
    }
    return 0;
}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 这道题目要求我们模拟银行业务队列,具体来说,就是模拟银行柜台的服务过程。我们需要考虑到不同的业务类型,以及不同的客户到达间和服务间。我们可以使用队列模拟客户的排队过程,每个客户进入队列后,按照先来先服务的原则进行服务。当柜台空闲队列中的第一个客户就可以进行服务,直到服务完成后,客户离开队列,柜台重新变为空闲状态。 为了实现这个模拟过程,我们需要定义一个客户类,包含客户到达间、服务间和业务类型等属性。然后,我们可以使用一个队列来存储客户,每当有客户到达,就将其加入队列中。同,我们需要定义一个计器,来记录当前间,以便判断客户是否已经到达或者服务已经完成。当柜台空闲,我们就从队列中取出第一个客户进行服务,直到服务完成后,客户离开队列,柜台重新变为空闲状态。 在模拟过程中,我们需要注意一些细节问题,比如客户到达间和服务间的随机性,以及不同业务类型的处理方式等。同,我们还需要输出一些统计信息,比如客户平均等待间和柜台利用率等,以便评估银行的服务质量。 ### 回答2: 本题需要模拟银行业务队列的过程,银行业务队列通常包括取款、存款、转账等多种业务,需要对用户的需求进行管理和排序,以确保业务处理的效率。 首先,我们需要定义一个队列,以存储用户在银行中的需求,并对队列中的需求进行操作和排队。我们可以使用数组或链表作为队列的数据结构,具体实现方式可根据实际情况选择。 在模拟银行业务队列,需要考虑到以下几点: 1. 用户的需求种类及优先级。不同的需求拥有不同的优先级,例如,取款的优先级通常比查询账户余额的优先级高,所以在队列中应该优先处理取款的需求。 2. 队列的推进和弹出操作。在队列中,每当有用户的需求得到满足,我们需要将队列中的元素向前推进,将下一个需求变为队首元素。同,需要弹出已经处理完毕的需求,使队列长度减小。这一过程可以通过队列的出队(pop)和入队(push)实现。 3. 用户等待的间。为了模拟真实的银行业务队列,我们需要记录每个用户在队列中等待的间,并统计各种需求的平均等待间。这可以通过记录每个用户的到达间和完成间来实现。 在代码实现上,我们可以用一个结构体来表示每个用户的需求和等待间,然后将它们放入队列中。在每个间片中,我们需要检查当前队列中的用户需求,并按照优先级处理。同,还需要更新队列中各个用户的等待间。当队列为空模拟结束,输出各种需求的平均等待间即可。 总之,模拟银行业务队列需要考虑多个方面的因素,并依据实际需求进行适当的调整和优化。这一过程可以帮助我们更好地理解和掌握队列的概念和应用。 ### 回答3: 本题要求我们使用队列模拟银行业务的排队与服务过程。具体来说,每个客户会进行某些银行业务(如存款、取款、转账等),我们需要根据客户需求模拟出等待队列、服务队列等环节。 首先,我们需要定义一个队列数据结构来存储等待队列和服务队列中的客户。在考虑队列实现,我们可以使用数组或链表来实现。其中,数组实现队列需要考虑队列的扩容和缩容问题,而链表实现队列则可以动态扩展和缩减队列长度。由于每个客户需要存储多个属性(如姓名、银行卡号、所需业务等),因此可以定义一个Customer类来描述客户的基本信息和所需服务的银行业务。 其次,我们需要定义一个服务窗口的数量。每个窗口可以同为一名客户提供服务,因此可以定义一个窗口队列(即服务队列)来存储当前正在执行业务的客户。在客户完成当前业务后,该窗口将被配给等待队列中的下一位客户。需要注意的是,当等待队列中没有客户,窗口需要继续等待客户到来。 在模拟过程中,我们需要动态记录客户的到达间、等待间、服务开始间等信息,并根据实际业务流程更新这些信息。具体来说,当客户到达银行,我们需要将其添加到等待队列中,并记录其到达间;当客户从等待队列进入服务队列,我们需要记录其进入服务队列间;当客户完成当前业务,我们需要记录其完成间和等待间,并将该客户从服务队列中移除;当服务队列中的窗口空闲,我们需要从等待队列中选取下一位客户进行服务。 最后,在模拟过程中,我们需要根据特定的顺序来处理等待队列中的客户。一般来说,可以根据客户到达间的先后顺序来处理队列中的客户,也可以根据客户所需服务的间长短来进行处理,具体要考虑业务的复杂度和实现难度。另外,需要注意的是,在队列模拟过程中,我们需要根据实际业务需求进行处理,例如禁止客户插队或修改等待队列中客户的顺序,避免模拟结果与实际情况不符。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值