网站大量收购独家精品文档,联系QQ:2885784924

数据结构课程设计:电梯模拟.doc

  1. 1、本文档共58页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构课程设计:电梯模拟

问题描述: 模拟某校九层教学楼的电梯系统。该楼有一个自动电梯,能在每层停留。九个楼层由下至上依次称为地下一层、第一层、第二层、……第八层,其中第一层是大楼的进出层,即是电梯的“本垒层”,电梯“空闲”时,将来到该层候命。 乘客可随时地进出于任何层。对于每个人来说,他有一个能容忍的最长等待时间,一旦等候电梯时间过长,他将放弃。 模拟时钟从0开始,时间单位为0.1秒。人和电梯的各种动作均要消耗一定的时间单位(简记为t),比如:有人进出时,电梯每隔40t检测一次,若无人进出,则关门;关门和开门各需要20t;每个人进出电梯均需要25t;如果电梯在某层精致时间超过300t,则驶回1层候命。 基本要求: 按时序显示系统状态的变化过程,即发生的全部人和电梯的动作序列。 需求分析: (1)用系统计时,每当有新的动作要输入时要暂停计时,等输入完成后即可继续计时。 (2)输入各个动作,最后,输入完毕后,可以保存所有动作序列,并有序输出。 设计: 设计思想 (1)存储结构 根据问题描述,可采用单链表结构。 结点描述: a[1000] mytime *next 事件内容 时间发生的时间 下一个事件指针 定义如下: typedef struct Node { char a[1000];//信息 int mytime;//时间 struct Node *next; }SLNode; (2)基本思想 a.用 time.h 里面的clock()来计时,当有输入时,记录下开始输入的时间和结束输入的时间,之后就可以算出动作的时间了。 b.将各个动作发生的时间进行处理,算出每个事件的发生顺序和时间。 c.将各个数据插入链表,即可实现题目要求。 设计表示法 (1)过程或函数调用的关系图 main yunxing print ListInsert LinListSort 各个动作函数(n个) ge) ListInitiate Destroy (2)基于数据结构的操作组 主要在于yunxing()函数,它将各个时间动作处理成时间事件,并将事件插入到链表中。 (3)过程与接口规格说明 无 实现注释 未实现。 详细设计 无 调试分析 用户手册 测试结果 没有成功 源程序清单 #include stdio.h #include stdlib.h #include time.h #include string.h typedef struct //规定最大乘坐人数为13 { int lc;//电梯所在楼层 int rs;//电梯中的人数 int men;//门的状态 0关1开(假设关了门时除了在第一层等人时之外,都在移动) }dianti; typedef struct { int rrsj;//一个人的容忍时间 int sz;//所在楼层 int md;//目的楼层 }man; typedef struct Node { char a[1000];//信息 int mytime;//时间 struct Node *next; }SLNode; void ListInitiate(SLNode * * head) { if((*head = (SLNode * )malloc(sizeof(SLNode))) == NULL) exit(1); ( *head)-next = NULL; } int ListInsert(SLNode *head,int i,char a[1000],int t) { SLNode *p,*q; int j; p=head; j=-1; while(p-next!=NULL ji-1) { p=p-next; j++; } if(j!=i-1) { printf(插入位置参数错!); return 0; } if((q=(SLNode *)malloc(sizeof(SLNode))) == NULL) exit(1); q-mytime = t; strcpy(q-a,a); q-next =p-next; p-next =q; return 1; } void LinListSort(SLNode *head) {//用时间排序 SLNode *curr,*pre,*p,*q; p=head-next; head-next

文档评论(0)

almm118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档