问题描述: 模拟某校九层教学楼的电梯系统
该楼有一个自动电梯,能在每层停留
九个楼层由下至上依次称为地下一层、第一层、第二层、„„第八层,其中第一层是大楼的进出层,即是电梯的“本垒层”,电梯“空闲”时,将来到该层候命
乘客可随时地进出于任何层
对于每个人来说,他有一个能容忍的最长等待时间,一旦等候电梯时间过长,他将放弃
模拟时钟从 0 开始,时间单位为0
人和电梯的各种动作均要消耗一定的时间单位(简记为t),比如:有人进出时,电梯每隔 40t 检测一次,若无人进出,则关门;关门和开门各需要 20t;每个人进出电梯均需要 25t;如果电梯在某层精致时间超过 300t,则驶回 1 层候命
基本要求: 按时序显示系统状态的变化过程,即发生的全部人和电梯的动作序列
需求分析: (1)用系统计时,每当有新的动作要输入时要暂停计时,等输入完成后即可继续计时
(2)输入各个动作,最后,输入完毕后,可以保存所有动作序列,并有序输出
设计: 设计思想 (1)存储结构 根据问题描述,可采用单链表结构
结点描述: 定义如下: typedef struct Node { char a[1000];//信息 int mytime;//时间 struct Node *next; }SLNode; (2)基本思想 a
用 time
h 里面的clock()来计时,当有输入时,记录下开始输入的时间和结束输入的时间,之后就可以算出动作的时间了
a[1000] mytime *next 事件内容 时间发生的时间 下一个事件指针 b
将各个动作发生的时间进行处理,算出每个事件的发生顺序和时间
将各个数据插入链表,即可实现题目要求
设计表示法 (1)过程或函数调用的关系图 main yunxing print ListInsert LinListSort 各个动作函数(n 个) g