编辑: 过于眷恋 2019-07-05
第15卷第1期2002年3月.

青岛教育学院学报 . 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

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题