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) {

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

}

/*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) {

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

}

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

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?