编辑: 过于眷恋 | 2019-07-05 |
青岛教育学院学报 . Journal of Qingdao Education College V01.15 No.1 Mar.2002 排队问题的系统仿真 王仙洲 (青岛教育学院物理系,山东青岛266071) 摘要:本文以理发店的运作情况为模型,讨论了排队问题的系统仿真. 关键词:队列;
系统仿真 中图分类号:TP31文献表示码:A文章编号:1008―276X(2002)01一0044・05 现实生活中排队现象是很常见的,例如车站买票、医院 next;
e.0.curTime=p一>data.()ccurTime} e.NType=p一>data.NType;
L.head一>眦xt―p一>next;
if(L.current一一p) L.current―L.head一>next I if(L.tail一=p) L.tan―L.headl delete(p);
L.Ien一一l return oK;
) ElemType GetCurElem(LinkList L) {//返回当前指针的数据元素 ElemType e;
e―L.current一>data;
return e;
} status SetCurElem(I.inkList 8也,ElemType e) {//更新当前指针的数据元素 L.current一>data=e;
return oK;
) status Prior(LinkList 8LL) {//改变当前指针指向其前驱 Link p;
p―L.head;
if(p盏=I..current II!L.current) return ERROR: while(p一>next!一I,.current) p=p一:>next;
L.current=2p;
return oK;
) status Next(I.inkList{Ⅺ,)
45 万方数据 万方数据 青岛教育学院学报 2002年第+1期{//构造一个空队列Q Q.front=Q.rear=new QNode;
if(!Q.front) ERRoRMESSAGE("OVERFLoW")l //存储分配失败 Q.front一>next=NULL;
return oK;
) status DestroyQueue(LinkQueue&Q) {//销毁队列Q whiIe(Q.front) {Q.rear―Q.front一>next;
delete(Q.front);
Q.front―Q.rear;
) return oK;
) status ClearQueue(LinkQueue&Q) {//将Q清为空队列 if(!Q.front)return ERROR;
while(Q.front一>next) {Q.rear=Q.front~>next;
Q.front一二>next:=Q.rear一:>next I delete(Q.rear);
) Q.rear=Q.front;
return oK;
) status QueueEmpty(LinkQueue Q) {//若队列Q为空队列,则返回TRUE, //否贝H返回FALSE if(!Q.front一>next)return TRUE;
return FA乙SE;
} int QueueLength(LinkQueue Q) {//返回Q的元素个数 int k―O: QueuePtr p;
p―Q.front;
while(p一>next) {p=p一>next;
++k;
) return k;
) status GetHead(LinkQueue Q,QEIemType&e) {//用e返回Q的对头元素 if(!Q.front一>next)return ERROR;
e―Q.front一:>next一>data;
return 0K;
) status EnQueue(LinkQueue&Q,QElemType e) {//插入元素e为Q的新的队尾元素 QueuePtr p;
p=new QNode;
if(!p)ERRORMESSAGE("OVERFLoW");
p一>data―e;
p一>next―NULI.;
Q.rear一:>next―p;
Q.rear―pI return 0K;
) status DeQueue(LinkQueue 8Q,QElemType 8啦) {//若队列不空,则删除Q的队头元素 QueuePtr p;
if(Q.front一一Q.rear)return ERROR, p=Q.front一>next l e=p一>data;
Q.front一>next=p一:>next;
if(Q.rear=一p) Q.rear―Q.front;
delete(p);
return 0K;
) status QueueTraverse(LinkQueue Q, status(*visitl)(QueuePtr)) {//输出队列 QueuePtr p;
if(Q.front一>next一一NULL) return ERROR l p―Q.front一>next;
whiIe(p) {(*visitl)(p);
p―p一>next;
) return oK;
) status visit 1(QueuePtr p) {//输出结点p的元素 cout