(c++)数据结构与算法之链表线性表的应用:银行叫号系统

这个博客通过C++代码展示了如何利用链表和线性表的数据结构设计一个银行叫号系统。系统包含不同类型的窗口(普通、VIP、对公)和对应的队列,模拟了客户进入银行、排队、窗口叫号和服务过程,展示了数据结构在解决实际问题中的应用。
摘要由CSDN通过智能技术生成
#include <iostream>
#define D 4                 //每个人业务处理时间
#define T 2                 //入队时间间隔
#define ST 12               //按要求模拟12秒(共7次)的银行叫号;
//共有3个普通窗口(n1,n2,n3),一个vip(v1),一个对公(b1);
using namespace std;
class user                                  //对象:客户
{
private:
    int id;                             //编号,区分不同的用户
    int IsWait;                         //是否在等待:是(1)  否(1)
    int ArriveTime,ServeTime;           //到达开始服务时间(不确定),  服务时间统一为4s
    char type;                          //用户类型  普通:n;  对公:b;    VIP:v;
    user * next;                        //用于排队的结点
public:
    user()
    {
        id=IsWait=0;
        ArriveTime=-1;
        ServeTime=D;
        next=NULL;
    }
    user(char stype,int sid)          //stype顾客类型;sid顾客;
    {
        id=sid;
        type=stype;
        IsWait=0;
        ArriveTime=-1;
        ServeTime=D;
        next=NULL;
    }
    void set_arrivtime(int sArrivetime)
    {
        ArriveTime=sArrivetime;         //MMP
    }
    char get_type()
    {
        return type;
    }
    int get_id()
    {
        return id;
    }
    user * get_next()
    {
        return next;
    }
    int get_finish_time()              //返回服务结束的时间
    {
        return ArriveTime+4;
    }
    void Clear()
    {
        id=IsWait=0;
        ArriveTime=-1;
        ServeTime=-1;
        next=NULL;
    }
};
struct queue_node                           //用于队列的结点node
{
    user User;
    queue_node * next;
};
typedef queue_node node;
class Queue                                 //不同类型客户有不同的队列:三条队列(n,b,v)
{
private:
    bool empty;
    char type_queue;
    node *front;
    node *rear;
public:
    friend class user;              //为什么声明了友元类函数还是不能访问私有数据
    Queue()
    {
        empty=true;
        type_queue='\0';
        front=rear=NULL;
    }
    bool Inqueue(user u)
    {
        node *n=new node;
        n->User=u;
        n->next=NULL;
        if(n->User.get_type()==type_queue)
        {
            cout<<"排队类型错误"<<endl;
            return false;
        }
        //p->next=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值