#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=
(c++)数据结构与算法之链表线性表的应用:银行叫号系统
最新推荐文章于 2023-02-19 23:03:37 发布
这个博客通过C++代码展示了如何利用链表和线性表的数据结构设计一个银行叫号系统。系统包含不同类型的窗口(普通、VIP、对公)和对应的队列,模拟了客户进入银行、排队、窗口叫号和服务过程,展示了数据结构在解决实际问题中的应用。
摘要由CSDN通过智能技术生成