停车场问题含完整C程序代码_第1页
停车场问题含完整C程序代码_第2页
停车场问题含完整C程序代码_第3页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、最新文件 仅供参考已改成word 文本 方便更改停车场问题完整c程序代码1)内容:设停车场是一个可停放n辆汽车的狭长通道,且只有一个人门可供汽车进出。 汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(人门在最南端,最先到达 的在最北端),若停车场内已经停满n辆车,那么后来的车只能在场外等候,一旦有车开走, 则等候在第一位的车即可开入(这是一个队列设长度为m);当停车场内某辆车需要开出, 则在它之后的车辆必须给它让道,当这辆车驶出停车场后,其他车辆按序入栈。每辆车按时 间收费。2)要求:以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入数据的序列进行模 拟管理。每一组输入数据包括三

2、个数据:汽车的"到达"(A表示)或"离去"("表示)信息, 汽车标识(牌照号)以及到达或离去的时刻。对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或者便道上的停车 位置;若是车辆离去,则输出汽车在停车场停留的时间和应缴纳的费用(便道上 不收费)。栈以顺序结构实现,队列以链表结构实现。# include<stdio.h>#include<stdlib.h>#define pmax 3定义停车场的最大容车量为3#define price 2停车单价为2static int flag=O;全局变量,

3、用来记录停车场车的数量struct parkcar定义车辆的结构体long num;int time;struct parkcar*next; *head,*rear;struct parkcar pcpmax;struct parkcar tcpmax;结构体数组创建停车场的结构体数组创建用来缓存停车场出来的车辆的struct parkcar *inqueue(long carnumzint atime);声明入队列函数,让车辆进入候车区void arrive(void);void leave(void);void display_P(void);数void display_W(void);

4、函数int main()head=NULL;针和尾指针rear=NULL;int state=O;=Parkcar Menu=nn);声明到达函数声明离开函数/廣明显示停车场车辆信息的函声明显示侯车区车辆信息的初始化队列头指printfCV/瀚出停车菜单printf(Htprice:2n");printf("tinputstatenH);A ),后执行相应函数printf(Ht AarrivenJ;printf(Ht DleavenJ;printf(Ht Pdisplay park_carnJ;printf(Ht Wdisplay wait_carrf);printf(Ht

5、 Equitn”);do通过先输入状态(如通过先输入状如果停车场为空则printf(”input:n“);scanf(,%c,/&state);fflush(stdin);switch(state)态(如A ),后执行相应函数case 'A'larriveOjbreak;case ,D':if(pcflag-l.num=NULL)输出为空printf("Park is empty!n");elseleave();break;case P:display_P();break;case 'W':clisplay_W();break

6、;case 'E':break;default:printf("eiror message,!nput again!rf);当输入Ewhile(state!=,E,);则退出return 0;void arrive(void) long carnum;int atime;prin tf(Mplease in put car number and arrive time!nn);scanf("%ld %d,/&carnum,&atime);fflush(stdin);if(flag!=pmax)如果停车场未满,则入停车场pcflag. nu m

7、=carnum;pcflag.time=atime;+flag;else否则inqueue(car nunxatime);囲唉车区struct parkcar 才inqueue(long carnumjnt atime)立候车区的队列链表struct parkcar*p;p=(struct parkcar*)malloc(sizeof(struct parkcar);p->num=carnum; p->time=atime;if(head=NULL)head=p; elserear- >n ext=p;rear=p;rear->next =NULL; return he

8、ad;void leave(void)long car num;int ltime,dtime;int save=0;int i=l,flagO;以尾插法建离开时间,停车时间flagO=flag;/flagO用来存储刚调用离开函数时flag的值struct parkcar*p;prin tf(nplease in put car nu mber and leave time!nJ;scanf("%ld %d,&carnum,&ltime);fflush(stdin);while(pcflag-l.num !=carnum)从栈顶往下找要离开的那辆车tcsave. nu

9、 m=pcflag-l.num;tcsave.time =pcflag-l.time;tcsave. next =pcflag-l. next ;if(flag=l&&pcO.num !=carnum)如果找到栈底都没有这辆车,则返回,并将存储着刚调用离开函数时flag的值,即flagO重新赋值给flag ,避免在没有车辆离开的情况下对全局变量flag进行修改而导致错误printf(nThis car is not founded!nn);flag=flagO;return;flag-;save+;dtime=ltime-pcflag-l.time ;停车时间的计算5 口果输入

10、的离开时间小于到达时间则重新输入离开时间printf(nThe leave time is illegal,please input the leave time againn”); scanf(,%d,&ltime);fflush(stdin);dtime=ltime-pcflag-l.time;printf("tpark time:%drV:dtime);printf("tcost: %dn"/dtime*price);输出停车时间和费用while(save!=O)当车辆离开后,将缓存栈里的车回到停车场if(i-)flag-;因为执行完上一个while

11、循环后flag少执行了次减一操作,通过控制i来让flag在这个循环里只减一次。但flag-save-;放在while ( save!=0 )外面,这样对某些输入会有bug。也就是只有当缓存栈里有车时才需要flag做一次减一操作pcflag.num =tcsave.num ;pcflag.time =tcsave.time;flag+;if(head!=NULL)如果候车 区不空,则将队首第一辆车进入停车场p=head;pcflag.num 二p>num;pcflag.time =ltime;pcflag.next 二p>next;显示从候车区flag+;printfC't&

12、#39;Wld'car in park,arrive time:%dn蔦p->num Jtime);进停车场的车辆车牌号和进入时间head=head->n ext;free (p);void display_P(void)从栈顶往栈底显示停车场的车辆信息int flagl;flagl=flag;用flagl记录此时的flag ,避免对全局变量进行操作prin tfC'Xtparkcarnumairive_timerf);fflush(stdin);while(flagl)!=O)printf(Ht%ld%drCpcflagllnum,pcflag:lJtirne);flagl-;从队首void display_W(void)往队尾显示候车区的车辆信息struct parkcar*w;w=head;prin tf(Htwait_carnum arrive_timenH);while(w!=NULL)printf(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论