《2022年数据结构停车场管理程序 .pdf》由会员分享,可在线阅读,更多相关《2022年数据结构停车场管理程序 .pdf(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、停车场管理程序问题描述:设停车场内只有一个可停放n 辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端) ,若车场内已停满n 辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后开入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。基本要求:每一组输入数据包括三个数据项:汽车“到达”或
2、“离去”信息、汽车牌照号码及到达或离去的时刻,对每一组输入数据进行操作后的输出数据为:若是车辆到达, 则输出汽车在停车场内或便道上的停车位置;若是车离去; 则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费, 单位时间的停车费用由用户从键盘输入) 。具体思路是:1、先编写车到达的情况2、再写车离去的情况3、从离去方面在进一步写缴费情况4、写主函数这次用到的是链的算法和全局变量的和switch 的算法(看程序)数据测试结果名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - -
3、第 1 页,共 7 页 - - - - - - - - - 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 7 页 - - - - - - - - - 程序总结和心得:这个题目内容死板,不容易写,死了许多脑细胞;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 7 页 - - - - - - - - - 但也再次扩展了我知识,把单链表再次熟练总的来说很
4、累! !#define n 3/定量小,好观察#define price 0.05 / 定义价格为每分钟0.05 元#include stdio.h #include stdlib.h typedef struct TIME/时间的结构 int hour; int min; time; typedef struct record int num;/汽车牌照号码time reach;/到达时刻time leave;/离开时刻datatype; typedef struct node datatype data;/结点数据域struct node *next;/结点的指针域link; link *
5、head;/头指针link *park(head,i)/车达到的函数, i 是全局变量,不声明link *head; link *p; if(idata.num); printf(n 车辆到达时间 :); scanf(%d:%d,&(p-data.reach.hour),&(p-data.reach.min);/:是为了控制时间的输入格式p-next=head-next;/把头指针的地址域给p 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 7 页 - - - - - -
6、 - - - head-next=p;/头指针再指向 p else printf(ntt停车场已满,请在便道稍等!ttn); return (head);/返回头指针 return(head);/最后返回头指针 void PRINT(link *p,int x)/ 车辆收费 int A1,A2,B1,B2; printf(n 车辆离开的时间 :); scanf(%d:%d,&(p-next-data.leave.hour),&(p-next-data.leave.min);/这是根据查找而写的,表示返回的p 是前驱结点printf(n 其到达时间为: %d:%d,p-next-data.rea
7、ch.hour,p-next-data.reach.min); printf(n 离开时间为: %d:%d,p-next-data.leave.hour,p-next-data.leave.min); A1=p-next-data.reach.hour; A2=p-next-data.reach.min; B1=p-next-data.leave.hour; B2=p-next-data.leave.min; printf(n 应交费用为 : %-8.3f 元n,(B1-A1)*60+(B2-A2)*price);/钱的算法 link *key_search(head,key)/查找 key
8、被删除功能调用,找前驱结点link *head;int key; link *p; p=head; while(p-next!=NULL) if(p-next-data.num!=key) p=p-next; else return(p); return(NULL);/查找失败,返回空指针NULL link *key_delete(head) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 7 页 - - - - - - - - - link *head; link *p
9、;int x; printf(离开的车请输入车牌号: ); scanf(%d,&x); p=key_search(head,x);/前驱结点if(p!=NULL) PRINT(p,x); p-next=p-next-next;/把结点删除return(head); else printf(ntt输入的 %d车牌不在,请重新输入数据!n,x); return(head); void list(head)/列表link *head; link *p; p=head; while(p-next!=NULL)/就如头指向第一个结点 printf(车号%d,进去时间 %d:%dn,p-next-data
10、.num,p-next-data.reach.hour,p-next-data.reach.min); p=p-next; main() link *head; int ch; int i=1; head=(struct node*)malloc(sizeof(link); head-next=NULL; while(1)/用于循环 printf(nt * 欢迎使用停车场系统.*nn); printf(nt 1. 车辆到达登记 .tn); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - -
11、第 6 页,共 7 页 - - - - - - - - - printf(nt 2. 车辆离开登记 .tn); printf(nt 3. 车辆列表显示 .tn); printf(nt 4. 退出系统 .tnn); printf( 请选择 : ); while(1)/选项输入限制 scanf(%d,&ch); if(ch=1&ch=4)break; else printf(n 输入有误,请重新选择: 14: ); switch(ch) case 1:head=park(head,i);i+;list(head);break;/i用于循环case 2:head=key_delete(head);i-;list(head);break;/i用于控制车数,减少 case 3:list(head);break; case 4:exit(0); default: break; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 7 页 - - - - - - - - -
限制150内