c语言版数据结构-用队列模拟一个银行排号系统的源代码

如题所述

第1个回答  2012-09-12
写个main方法使用循环的方式调用BankSimSystem中的方法即可模拟整个排队和叫号过程。
class BankSimSystem {
private:
QueueManager mQManager;
public:
BankQueueSystem() {
mQManager = new QueueManager();
}

void getOneNum() {
int nRand = random(5);
int nNum;
if nRand <= 2) {
nNum = mQManager.getOneVIPNum();
printf("One people enqueue : N%d" nNum);
} else {
nNum = mQManager.getOneNormalNum();
printf("One people enqueue : V%d" nNum);
}
}
void CallOneNum() {
char *sNum = mQManager.CallOneNum();
if (nNum == -1) {
printf("None in queue");
}
printf("Call the people : %s", sNum);
}
}
class QueueManager {
private:
Queue mNormal;
Queue mVIP;
public:
QueueManager() {
mNormal = new Queue();
mVIP = new Queue();
}
char getOneNormalNum() {
int mNormal.enQueue();
}
int getOneVIPNum() {
return mVip.enQueue();
}
char* CallOneNum() {
char sNum[10];
if (!mVIP.isempty()) {
sprintf(sNum, "V%d",mVIP.outQueue())
return sNum;
}
if (!mNormal.isempty()) {
sprintf(sNum, "N%d",mNormal.outQueue())
return sNum;
}
return null;
}
};
class Queue {
private:
int mNum;
struct Index{
int num;
struct index *next;
} *mHead, *mTail;
public:
Queue() {
mNum = 0;
mHead = null;
mTail = null;
}
int enQueue() {
struct Index *tmpIndex = (struct Index *)malloc(sizeof(struct Index));
tmpIndex->num = mNum;
tmpIndex->next = null;
mNum++;
if (mTail == null) {
mHead = tmpIndex;
} else {
mTail->next = tmpIndex;
}
mTail = tmpIndex;
}
int outQueue() {
struct Index *tmpIndex;
int nReturn;
if (mHead == null) {
return -1;
}
tmpIndex = mHead;
mHead = mHead->next;
if (mHead == null) {
mTail == null;
}
nReturn = tmpIndex->num;
free(tmpIndex);
return nReturn;
}
}本回答被网友采纳
第2个回答  2012-09-10
这个问题太范范了吧……

数据结构课设:银行排队系统模拟
这里我们假设有1、2两个窗口,T(1)=T(2)=0 建立一个(按时间的)优先级队列,初始化为空。假设银行0时开业,下面举例来说明:第一个客人于1分钟到达,假设这个客人办理业务需要的时间为10分钟(一般模拟过程中,这个时间是在某个范围内随机生成的)。为该用户分配一个空闲窗口1,同时T(1)=11。...

谁能用C#设计一个银行排队叫号系统,简单的就行。需要程序文件和源代码...
程序很简单,说白了就是对一个数据表(排队号)进行操作啊,客户取号生成排队号(当然可按业务分类取号,如:公司业务、个人业务等),柜台叫号时将当前号置为无效,并取下一个号。熟手半天搞定了。

数据结构中,循环队列有一条语句Q.base[Q.rear]=e;没看懂,贴主要代码如 ...
然后q.base[0] = e就是首个元素入队 (而一开始就是q.rear=0,即q.base[q.rear]=e 因为每次都是在队尾入队嘛 ) 然后应该是 q.rear=q.rear+1了 同时为了防止下标超出MAXQSIZE所以就有了 Q.rear=(Q.rear+1)%MAXQSIZE;来后移队尾指向的元素位置(其实是下一个待入队元素的下标,...

C语言数据结构:利用两个顺序栈来实现一个列队的功能时遇到的问题
s1已满,从栈顶到栈低依次是:5、4、3 s2非空,从栈顶到栈底依次是:1、2 此时要想在入栈一个元素6的话,按照你的想法,得把s1的数据出栈到一个缓冲区,然后把缓冲区中,在原来s1栈底的3挪动到s2的栈顶,然后s1的4、5依次压回栈s1,然后s1就能够空出栈顶的一个位置了,对吧?但是,这...

严蔚敏 的 《数据结构(C语言版)》 这本书在豆瓣评分为什么不高?_百度...
严蔚敏的《数据结构(C语言版)》这本书在豆瓣评分挺高的。数据结构(C语言版)的具体内容:数据结构分为8类有:数组、栈、队列、链表、树、散列表、堆、图。数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成 。1、数组 数组是可以再内存中连续存储多个元素的...

学数据结构用什么书好
《数据结构C语言版》这本书,以C语言为载体,详细阐述了数据结构的理论知识和应用实例。它从数据结构的基本概念入手,逐步深入到各种数据结构如线性表、栈、队列、树、图等的设计与实现,同时结合具体的算法实例进行讲解。通过这本书的学习,读者能够掌握数据结构的原理、特点以及在实际编程中的应用方法,...

数据结构(c语言版)题目求答案
Status DeCiQueue(CiQueue&Q,int x)\/\/从循环链表表示的队列Q头部删除元素x { if(Q==Q->next)return INFEASIBLE;\/\/队列已空 p=Q->next->next;x=p->data;Q->next->next=p->next;free(p);rturn OK;}\/\/DeCiqueue 3.31 int Palindrome_Test(){ InitStack(S);InitQueue(Q);while((c=...

哪位大佬有 数据结构与算法(C语言版),求发这教材的网盘链接
https:\/\/pan.baidu.com\/s\/1nNt35bE8FY9EwtgEzRtSKQ pwd=1234 提取码:1234 内容简介 《数据结构与算法:C语言版》是2010年10月1日机械工业出版社出版的图书。该书共10章,一方面,涵盖数据结构的基本概念,定义了线性表、栈、队列、串、数组、广义表、树和二叉树、图、查找、排序等各种结构的...

C语言版数据结构程序设计求大神帮助
struct { SElemType elem[MaxSize]; int front,rear; }SqQueue; \/* 队列 *\/ void InitQueue(SqQueue* pQ) \/* 初始化队列,开始时队列为空 *\/ { pQ->front=pQ->rear=0; } int EnQueue(SqQueue* pQ,SElemType e) \/* 进队 *\/ { if ((pQ->rear+1)%MaxSize == pQ->front)...

用数据结构(C语言)编写停车场管理系统
可以借助百度Hi告诉我 有时间可以解决你的问题 具体的要求也可以告诉我 用数据结构(C语言)编写停车场管理 ES:\\\\875278B56A8D52A8FC7C65796A110F59

相似回答