资源描述
《数据结构》课程实验
实 验 报 告
题目: 停车场管理
专业: 计算机科学与几技术ﻩ
班级:
姓名: ﻩ
学号: ﻩ
完成日期:
一、试验内容
设停车场就是一个可以停放n辆汽车得狭长通道,且只有一个大门可供汽车进出.汽车在停车场内按车辆到达时间得先后顺序,依次由北向南排列(大门在最南端,最先到达得第一辆车停放在车场得最北端),若车场内已经停满n辆汽车,则后来得汽车只能在门外得便道上等候,一旦有车开走,则排在便道上得第一辆车即可开入;当停车场内某辆车要离开时,在它之后进入得车辆必须先退出场为它让路,待该辆车开出大门外,其她车辆再按次序进入车场,每辆停放在车场得车在它离开停车场时必须按它停留得时间长短交纳费用,试为停车场编制按上述要求进行管理得模拟程序.以栈模拟停车场,以队列模拟车场外得便道,按照从终端读入得输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码以及到达或离去得时刻。对一组输入数据进行操作后得输出信息为:若就是车辆到达,则输出汽车在停车场内或便道上得停车位置;若就是车辆离去,则输出汽车在停车场内停留得时间与应交纳得费用(在便道上停留得时间不收费)。
二、试验目得
(1)深入了解栈与队列得特性,掌握栈与队列得存储方法.
(2)掌握栈与队列得基本操作,如初始化、入栈(队列)、出栈(队列)等,并能在实际问题背景下灵活运用。
三、流程图
四、源程序代码
#include<stdio、h>
#include<stdafx、h〉
void main()
{
struct cc1
{
int hm1,sk1;
ﻩ}a[5];//停车场
struct bd
{
int hm2,sk2;
ﻩ}b[5];//便道
ﻩstruct cc2
ﻩ{
ﻩﻩint hm3,sk3;
}c[4];//存放从停车场内退出得车
int p=0,q=0,x=0,n,y,t,r,i,j,g,h,z;
char m;
printf(”输入停车场容量与每分钟收费\n”);
ﻩscanf(”%d%d”,&n,&y);
printf(”输入数据:\n");
for(;;)
{
ﻩscanf(”%c",&m);
//判断输入数据
ﻩﻩif(m=='e'||m==’E’)
ﻩ break;
ﻩ scanf("%d%d",&t,&r);//t表示车牌号,r表示时间
//车到达
ﻩif(m=='a'||m=='A')
{
ﻩ if(p<n)
ﻩﻩ {//n表示停车场容量,p表示场内车得数量
ﻩ a[p]、hm1=t;
ﻩﻩﻩﻩa[p]、sk1=r;
ﻩ ﻩprintf("车停在停车厂内%d号位置、\n",p+1);
ﻩﻩﻩ p++;
ﻩﻩ }
ﻩ //车停在便道内
else
ﻩ ﻩ{
ﻩﻩ b[q]、hm2=t;
ﻩﻩﻩﻩb[q]、sk2=r;
ﻩ printf("车停在便道上%d号位置、\n",q+1);
ﻩﻩ q++;
ﻩﻩ }
ﻩﻩ}
//车离开
ﻩﻩif(m==’d'||m=='D')
ﻩﻩ{h=p;
ﻩﻩﻩfor(i=0;i<p;i++,g=i)
ﻩﻩﻩ if(a[i]、hm1==t)
ﻩﻩ {//判断车就是否停在场内
ﻩ ﻩp--;
ﻩﻩif(i==p)//如果车停在场内最后一位
ﻩﻩ ﻩ printf(”%d号车在停车厂内停留了%d分钟,应交纳%d元钱、\n”,t,r-a[i]、sk1,y*(r-a[i]、sk1));
ﻩ else
ﻩﻩ {//在它之后进入得车辆先退出场为它让路
ﻩ for(j=p;j>i;j-—)
ﻩ ﻩ {
ﻩﻩ ﻩﻩ c[x]、hm3=a[j]、hm1;
ﻩ ﻩ ﻩﻩ c[x]、sk3=a[j]、sk1;
ﻩﻩ ﻩ x++;
ﻩ ﻩ ﻩ}
ﻩﻩﻩ ﻩ printf(”%d号车在停车厂内停留了%d分钟,应交纳%d元钱、\n”,t,r-a[i]、sk1,y*(r—a[i]、sk1));
ﻩﻩﻩﻩﻩ for(j=i;x—1〉=0;x--,j++)
ﻩﻩ ﻩﻩ{//退出得车再进入停车场内
ﻩﻩ ﻩ ﻩa[j]、hm1=c[x—1]、hm3;
ﻩﻩﻩ ﻩ ﻩa[j]、sk1=c[x-1]、sk3;
ﻩ }
}
ﻩﻩ ﻩﻩif(q!=0)
ﻩ ﻩﻩﻩ{//便道内得车进入停车场
ﻩﻩ ﻩa[p]、hm1=b[0]、hm2;
ﻩ ﻩﻩ a[p]、sk1=r;
ﻩﻩﻩ ﻩp++;
ﻩﻩ ﻩfor(j=0;j<q-1;j++)
ﻩﻩﻩ ﻩ{
ﻩ ﻩﻩb[j]、hm2=b[j+1]、hm2;
ﻩﻩ b[j]、sk2=b[j+1]、sk2;
ﻩ ﻩ }
ﻩ q-—;
ﻩ ﻩﻩ }
ﻩbreak;
}
ﻩﻩﻩ //判断车就是否停在便道上
ﻩ ﻩfor(i=0;i〈q;i++,z=q)
ﻩﻩ ﻩ if(b[i]、hm2==t)
ﻩ {
ﻩﻩﻩﻩ printf(”该车停留在便道内,不收费、\n");
ﻩ for(j=i;j〈q-1;j++)
ﻩﻩ {
ﻩﻩ b[j]、hm2=b[j+1]、hm2;
ﻩﻩ ﻩ b[j]、sk2=b[j+1]、sk2;
ﻩﻩ }
ﻩ q—-;
ﻩﻩ break;
ﻩ ﻩ }
if(g==h&&i==z) printf(”无该车、\n");ﻩ
ﻩﻩ}
ﻩ}
}
五、调试过程
调试过程中,车离开得那一部分经常出现错误,运行结果与预想得不太一样,后来发现就是停车场得计数器那出现了问题,使离开后再进入停车场得位置发生了错误.如果输入得离开时间比到达得时间小,则会出现付费为负值。
六、结果分析
展开阅读全文