• 大小: 569KB
    文件类型: .zip
    金币: 2
    下载: 0 次
    发布日期: 2024-01-26
  • 语言: 其他
  • 标签: 电梯模拟  

资源简介

数据结构课程设计时用到的实验题目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

评论

共有 条评论