《数据构造实例(停车场问题).docx》由会员分享,可在线阅读,更多相关《数据构造实例(停车场问题).docx(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数据构造实例(停车场问题)/头文件#include#include#include/函数返回状态代码#defineOK1#defineERROR0#defineTRUE1#defineFALSE0#defineINFEASIBLE-1#defineOVERFLOW-2#defineSIZE5/停车场位置数typedefintStatus;/栈,模拟停车场typedefstructCar1intnumber;/汽车车号intar_time;/汽车到达时间CarNode;typedefstruct/停车场CarNode*base;/停车场的堆栈底CarNode*top;/停车场的堆栈顶intsta
2、cksize;Park;/队列,模拟便道typedefstructCar2/车intnumber;/汽车车号intar_time;/汽车到达时间structCar2*next;*CarPtr;typedefstruct/便道CarPtrfront;/便道的队列的对头CarPtrrear;/便道的队列的队尾intlength;Shortcut;StatusInitStack(Park&P)/初始化停车场P.base=(CarNode*)malloc(SIZE*sizeof(Car1);if(!P.base)exit(OVERFLOW);P.top=P.base;P.stacksize=0;ret
3、urnOK;StatusPush(Park&P,CarNodee)/车进入*P.top+=e;+P.stacksize;returnOK;StatusPop(Park&P,CarNode&e)/车离开if(P.top=P.base)printf(停车场为空。);elsee=*-P.top;-P.stacksize;returnOK;StatusInitQueue(Shortcut&S)/初始化便道S.front=S.rear=(CarPtr)malloc(sizeof(Car2);if(!S.front|!S.rear)exit(OVERFLOW);S.front-next=NULL;S.le
4、ngth=0;returnOK;StatusEnQueue(Shortcut&S,intnumber,intar_time)/车进入便道CarPtrp;p=(CarPtr)malloc(sizeof(Car2);if(!p)exit(OVERFLOW);p-number=number;p-ar_time=ar_time;p-next=NULL;S.rear-next=p;S.rear=p;+S.length;returnOK;StatusDeQueue(Shortcut&S,CarPtr&w)/车离开便道if(S.length=0)printf(通道为空。);elsew=S.front-nex
5、t;S.front-next=S.front-next-next;-S.length;returnOK;StatusArrival(Park&P,Shortcut&S)/对进站车辆的处理intnumber,ar_time;printf(请输入车牌号:);scanf(%d,&number);printf(进场的时刻:);scanf(%d,&ar_time);if(P.stacksizeif(e.number=number)flag=0;money=(le_time-e.ar_time)*2;ar_time=e.ar_time;break;Push(P1,e);while(P1.stacksize
6、)Pop(P1,e);Push(P,e);/车从停车场中出if(flag=0)if(S.length!=0)DeQueue(S,w);m.ar_time=le_time;m.number=w-number;Push(P,m);free(w);printf(车牌号为%d的车已由便道进入停车场n,m.number);printf(停车费为%d,占用车位数为%dn,money,P.stacksize);elseprintf(停车场不存在牌号为%d的车n,number);returnOK;intmain()intm=1;charflag;/选项ParkP,Q;ShortcutS;InitStack(P
7、);InitStack(Q);InitQueue(S);while(m)printf(n停车场管理程序n);printf(=n);printf(*A汽车进车场*n);printf(*n);printf(*D汽车出车场*n);printf(*n);printf(*E退出程序*n);printf(=n);printf(请选择(A,D,E):);scanf(%c,switch(flag)caseA:casea:Arrival(P,S);break;/车进入停车场caseD:cased:Leave(P,Q,S);break;/车离开停车场caseE:casee:m=0;break;default:printf(Inputerror!n);break;while(flag!=n)scanf(%c,