ZBLOG

#include #include #define FALSE 0 #define TRUE 1 #define MAX 3 #define COST 1.2 // 预设车辆停车费为1.2元每小时 typedef struct Node //数据 { int number; int time; } Node; typedef struct QueueNode //队列结点 { struct Node infom; struct...

// 车辆进入停车场停车 void Park(LinkQueue *wait, LinkQueue *park) {

printf("请输入车号和停车时间\n");
int num, t;
scanf("%d,%d", &num, &t);
if (linklength(*park) >= MAX) { // 如果停车场已满,车辆进入等待区
    printf("停车场已满,进入等待区!\n");
    enqueue(wait, num, t);
} else { // 否则车辆直接进入停车场
    enqueue(park, num, t);
}

}

/*TODO: 功能描述:当停车场内某辆车要离开时,在它之前进入的车辆必须先退出车场为它让路,待该辆车开出大门后,其它让路的车辆再按先出后入的次序重新进入车场,然后便道上的车辆才能进入车场。 每辆车离开停车场时,应按其停留时间的长短交费(在便道上停留的时间不收费)。 参数说明:*wait-LinkQueue过道的车辆链队列 *park-停车场的车辆链队列 *giveway链栈-车辆离开的时候,用于保存在该车之前的车辆信息 num-int型车辆号 t-int型时间 如果查询到停车场中车辆号,则输入离开的时间printf(“请输入离开时间(以整数输入):\n”); scanf(“%d”,//TODO:车辆离开停车场的时间); 并计算和输出停车费用 停车费=1.2*(离开时间-停入停车场的时间) printf(“序号为%d的车停车时间%d小时,应收费%3.2f元\n”,num,time,fee); 如果停车场中没有输入的车辆号,printf(“查无此车!\n”); */ void Leave(LinkQueue *wait, LinkQueue *park, LinkStack *giveway, int num, int t) {

int flag = 0; // 停车场是否查询到该车辆
QueueNode p = park->front->next;
while (p != NULL) {
    if (p->infom.number == num) { // 查询到该车辆
        flag = 1;
        int fee = (int)((t - p->infom.time) * COST); // 计算停车费用
        printf("序号为%d的车停车时间%d小时,应收费%3.2f元\n", num, t-p->infom.time, (float)fee);
        pop(giveway, &num, &t); // 出栈,让路
        while (giveway->count > 0) { // 将便道上等待的车辆重新进入停车场
            pop(giveway, &num, &t);
            enqueue(park, num, t);
        }
        break;
    } else {
        push(giveway, p->infom.number, p->infom.time); // 将查询不到的车辆入栈,暂时让路
        p = p->next;
    }
}
if (flag == 0) { // 查询不到该车辆
    printf("查无此车!\n");
}

}

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=686

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?