资源简介
数据结构课程设计时用到的实验题目2.8电梯模拟C实现
代码片段和文件信息
/*
* elevator.c
*
* Created on: 2014年6月19日
* Author: LinBingcheng
*/
#include
#include
#include
#include
#include
#include “elevator.h“
//////////////////////////////////////////////////////////////////////////
//
// 定义基本外部变量
//
//////////////////////////////////////////////////////////////////////////
int Start = 1; //本垒层
int Limit = 15; //电梯的限载
int Maxfloor = 4; //最高处
int Minfloor = 0; //最低层
float t = 0.1; //单位时间0.1毫秒
int CloseTime = 40; //电梯关门测试时间
int OverTime = 300; //电梯停候超时时间
int DoorTime = 20; //开门关门时间
int InOutTime = 25; //进出电梯时间
int AccelerteTime = 15; //加速时间
int UpTime = 51; //上升时间
int DownTime = 61; //下降时间
int UpDecelerateTime = 14; //上升减速
int DownDecelerateTime = 23; //下降减速
int InOutCount = 0; //用于进出计时
int InterTime = 0; //下一乘客进入系统的时间
//////////////////////////////////////////////////////////////////////////
//
// 函数实现
//
//////////////////////////////////////////////////////////////////////////
Client *InitClient() {
Client *C = (Client*) malloc(C_LEN);
C->statu = New;
if (!C) {
exit(OVERFLOW);
}
return C;
}
Status DestroyClient(Client *C) {
free(C);
return OK;
}
void PrintClient(Client *C) {
switch (C->statu) {
case New:
printf(“%d号乘客进入第%d号电梯第%d层:目标层为第%d层进入时间为 %.1f S忍耐时间为 %.1f S\n“
C->id C->e_id C->InFloor C->OutFloor C->InterTime * t
C->GiveupTime * t);
break;
case GiveUp:
printf(“\t第 %.1f S 时\t%d号乘客放弃等待第%d号电梯\n“
(C->InterTime + C->GiveupTime) * t C->id C->e_id);
break;
case Out:
printf(“\t%d号乘客走出第%d号电梯\n“ C->id C->e_id);
break;
case In:
printf(“\t%d号乘客走进第%d号电梯,要去第%d层\n“ C->id C->e_id C->OutFloor);
break;
default:
break;
};
}
linkQueue *InitQueue() {
linkQueue *Q = (linkQueue *) malloc(C_Q_LEN);
if (!Q) {
exit(OVERFLOW);
}
Q->front = Q->rear = (QNode *) malloc(sizeof(QNode));
if (!Q->front) {
exit(OVERFLOW);
}
Q->front->next = NULL;
Q->front->data = NULL;
return Q;
}
Status ClearQueue(linkQueue *Q) {
while (Q->front) {
Q->rear = Q->front->next;
if (Q->front->data) {
free(Q->front->data);
free(Q->front);
} else {
break;
}
Q->front = Q->rear;
}
return OK;
}
Status DestroyQueue(linkQueue *Q) {
while (Q->front) {
Q->rear = Q->front->next;
if (Q->front->data) {
free(Q->front->data);
free(Q->front);
} else {
break;
}
Q->front = Q->rear;
}
free(Q);
return OK;
}
int QueueLength(linkQueue *Q) {
QNode *qn;
int length = 0;
for (qn = Q->front; qn != Q->rear; qn = qn->next) {
length++;
}
return length;
}
QueuePtr GetHead(linkQueue *Q) {
if (Q->front == Q->rear) {
return NULL;
}
return Q->front->next;
}
Status EnQueue(linkQueue *Q QElemType e) {
QNode *p;
p = (QNode *) malloc(sizeof(QNode));
if (!p) {
exit(OVERFLOW);
}
p->data = e;
p->next = NULL;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2014-06-26 17:44 elevator_00\
文件 11228 2014-06-20 13:15 elevator_00\.cproject
文件 789 2014-06-26 16:47 elevator_00\.project
目录 0 2014-06-26 16:47 elevator_00\.settings\
文件 1491 2014-06-19 17:24 elevator_00\.settings\org.eclipse.cdt.managedbuilder.core.prefs
目录 0 2014-06-27 11:21 elevator_00\Debug\
文件 411167 2014-06-27 09:45 elevator_00\Debug\elevator.o
文件 899821 2014-06-27 11:21 elevator_00\Debug\elevator_00.exe
文件 402652 2014-06-27 11:21 elevator_00\Debug\main.o
文件 11017 2014-06-27 09:13 elevator_00\elevator.c
文件 3936 2014-06-27 09:14 elevator_00\elevator.h
文件 1856 2014-06-27 09:46 elevator_00\main.c
- 上一篇:U盘数据恢复大师含注册码
- 下一篇:水果识别代码
评论
共有 条评论