《数据结构》实验报告.docx

上传人:b****2 文档编号:24563398 上传时间:2023-05-28 格式:DOCX 页数:14 大小:269.96KB
下载 相关 举报
《数据结构》实验报告.docx_第1页
第1页 / 共14页
《数据结构》实验报告.docx_第2页
第2页 / 共14页
《数据结构》实验报告.docx_第3页
第3页 / 共14页
《数据结构》实验报告.docx_第4页
第4页 / 共14页
《数据结构》实验报告.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

《数据结构》实验报告.docx

《《数据结构》实验报告.docx》由会员分享,可在线阅读,更多相关《《数据结构》实验报告.docx(14页珍藏版)》请在冰豆网上搜索。

《数据结构》实验报告.docx

《数据结构》实验报告

 

《数据结构》课程设计报告

 

系别:

管理信息系

班级:

B070503班

学号:

B07050310

姓名:

田坤

实训日期2009.06.29—2009.07.03

 

《数据结构课程设计》实验报告

开课实验室:

K机房2009年6月29日

班级

B070503

学号

B07050310

姓名

田坤

成绩

课程

名称

数据结构

实验项目

名称

停车场管理

指导教师

赵亚军

教师评语

 

教师签名:

年月日

一、实验目的

1、通过课程设计,加深对《数据结构》这一课程所学内容的进一步理解与巩固。

2、通过课程设计,加深对结构化设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构。

3、通过课程设计,提高程序开发功能,能运用合理的控制流程编写清晰高效的程序。

4、通过课程设计,训练C程序调试能力,能将一个中小型各级组织系统联调通过。

5、通过课程设计,开发一个中小型系统,掌握系统研发全过程。

6、通话课程设计,培养分析问题、解决实际问题的能力。

二、功能要求

设计一个停车场管理系统,模拟停车场的运作,通过此程序具备以下功能:

1、要求以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的数据序列进行模拟管理

2、要求处理的数据元素包括三个数据项:

汽车“到达”或“离去”信息,汽车牌照号码及到达或离去的时间

3、该系统完成以下功能:

若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是离去,则输出汽车在停车场内停留的时间和应缴纳的费用(在便道上停留的时间不收费)

4、要求栈以顺序结构实现,队列以链表实现

三、设计要求

1、独立完成全部代码的设计、编写、调试与部署,运行正确无误

2、编写设计报告书

设计报告书应包括:

(1)问题描述和系统要求

(2)系统主要功能模块设计

(3)设计中遇到的问题及其解决方法

(4)系统运行报告

(5)总结

1问题描述:

设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。

车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。

如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排以便道上的第一辆车就进入停车场。

停车场内如有某辆车要开走,在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些辆再依原来的次序进场。

每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。

如果停留在便道上的车未进停车场时,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。

编制一程序模拟该停车场的管理。

2基本要求:

要求程序输出每辆车到达后的停车位置(停车场或便道上),以及某辆车离开停车场应交纳的费用和它在停车场内停留的时间。

3实现提示:

汽车的模拟输入信息格式可以是:

(到达/离去,汽车牌照号码,到达/离去的时刻)。

例如,(‘A’,1,5)表示1号牌照车在5这个时刻到达,而(‘D’,5,20)表示5号牌照车在20这个时刻离去。

整个程序可以在输入信息为(‘E’,0,0)时结束。

本题可用栈和队列来实现。

 

四、运行环境

1.TurboC

2.Windows操作系统

五、实验步骤

(绘制相应的流程图)

 

六、实验过程原始代码

#include"stdio.h"

#defineN5/*定义停车场长度*/

#defineM10

typedefstruct/*定义栈元素的类型*/

{

intnum;

jintarrtime;

}elemtype;

typedefstruct/*定义栈*/

{elemtypestack[N];

inttop;

}stack;

typedefstructnode/*定义队列节点类型*/

{intnum;

structnode*next;

}queneptr;

typedefstruct/*定义队列*/

{queneptr*front,*rear;

}quene;

voidinitstck(stack*s)/*初始化栈*/

{s->top=-1;

}

intpush(stack*s,eletypex)/*数据元素X进入指针S所指的栈*/

{if(s->top=N-1)

return(0);

}

}

elemtypepop(stack*s)

{

elemtypex;

if(s->top<0)

{x.num=0;

x.arrtime=0;

return(x);

}

else{x=s->stack[s->top];

s->top--;

returnx;/*如果栈不空,返回栈顶元素*/

}

}

 

voidinitquene(quene*s)/*初始化队列*/

{s->front=(queneptr*)malloc(sizeof(queneptr));

/*产生一个新结点,作为头结点*/

s->rear=s->front;

s->front->next=NULL;

s->front->num=0;/*头结点的NUM保存队列元素的个数*/

}

voidenquene(quene*s,intnum)/*数据入队列*/

{queneptr*p;

p=(queneptr*)malloc(sizeof(queneptr));

p->num=num;

p->next=NULL;

s->rear->next=p;

s->rear=p;

s->front->num++;

}

intdelquene(quene*s)

{queneptr*p;

intn;

if(s->front==s->rear)

return(0);/*如果对列空*/

else{p=s->front->next;

s->front->next=p->next;

if(p->next==NULL)

s->rear=s->front;

n=p->num;

free(p);

s->front->num--;

return(n);

}

}

voidarrive(stack*s1,quene*p,elemtypex)

{

intf;

f=push(s1,x);/*新到达的车辆入停车栈*/

if(f==0)

{

enquene(p,x.num);/*如果停车场满,就进入队列*/

printf("the%dcarstopsthe%dseatofthequene\n",x.num,p->front->num);

}

elseprintf("the%dcarstopsthe%dseatofthestack\n",x.num,s1->top+1);

}

voidleave(stack*s1,stack*s2,quene*p,elemtypex)/*处理车辆离去函数*/

{

intn,f=0;

elemtypey;

queneptr*q;

while((s1->top>-1)&&(!

f))

{

y=pop(s1);

if(y.num!

=x.num)

n=push(s2,y);

elsef=1;

}

if(y.num==x.num)/*如果栈顶元素不是要离开的车辆,就将其放入车辆避所*/

{

printf("themoneyofthe%dis%dyuan\n",y.num,(x.arrtime-y.arrtime)*M);

while(s2->top>-1)

{

y=pop(s2);

f=push(s1,y);

}

n=delquene(p);

if(n)/*在停车场中找到要离开的车辆*/

{

y.arrtime=x.arrtime;

f=push(s1,y);

printf("the%dcarstopsthe%dseatofthestack\n",y.num,s1->top+1);

}

}

else

{while(s2->top>-1)/*车辆规避所不空,将其全放回停车场*/

{

y=pop(s2);

f=push(s1,y);

}

q=p->front;

f=0;

while(f==0&&q->next!

=NULL)

if(q->next->num!

=x.num)

q=q->next;

else

{

q->next=q->next->next;

p->front->num--;

if(q->next==NULL)

p->rear=p->front;

printf("the%dcarleavethequene\n",x.num);

f=1;

}

if(f==0)/*在便道上没有找到要离开的车辆,输出数据错误*/

printf("error!

thestackandthequenehavenothe%dcar\n",x.num);

}

}

voidmain()/*停车场模拟管理程序*/

{

charch;

stack*s1,*s2;

quene*p;

elemtypex;

inti=1;

clrscr();

s1=(stack*)malloc(sizeof(stack));

s2=(stack*)malloc(sizeof(stack));

p=(quene*)malloc(sizeof(quene));

initstack(s1);initstack(s2);/*初始化停车规避所栈*/

initquene(p);/*初始化便道队列*/

while(i)

{

printf("whatdoyouwanttodo?

\n");

printf("input---(Add/Del/Exit):

");

scanf("%c",&ch);

switch(ch)

{

case'a':

printf("inputthenumber:

\n");

scanf("%d",&x.num);

printf("inputthetime:

\n");

scanf("%d",&x.arrtime);

arrive(s1,p,x);/*车辆到达*/

break;

case'd':

printf("inputthenumber:

\n");

scanf("%d",&x.num);

printf("inputthetime:

\n");

scanf("%d",&x.arrtime);

leave(s1,s2,p,x);/*车辆离开*/

break;

case'e':

printf("theend!

");

i=0;

break;

default:

{printf("inputerror!

---pleaseinputagain:

\n");break;}

}

ch=getchar();

 

七、实验结果及分析

1、欢迎界面

2、车辆到达

3、车辆离开

4、车辆信息(停车场)

5、车辆信息(便道)

 

八、实验体会与收获

数据结构课程设计现在已经结束了,可是我的动手操作能力练习好像还刚刚开始。

以前也注意到了理论要与实践相结合,只是平时说说而已,没有真正的去做,通过这次数据结构的实践性操作,我感觉:

学习实质性的东西要以实验为基础,只有在试验和实践中才能知道自己的真实能力。

试验课只是短短的一周时间,很多东西只是很肤浅的了解了一下,为了能够顺利的完成实验,赵老师在刚上课时就详细的讲解了实验的流程和实验的科目。

他让我们先从理论上了解了具体的操作步骤,听的时候感觉挺简单的,为了加深我们的印象,赵老师还专门为我们实际的操作了一遍。

可是当我们自己动手时,问题很多了,几乎没有一步能够顺利完成的,做的都有些磕磕绊绊。

很珍惜这次试验的几乎,所以,只要有时间,我还是经常在课后查阅资料,加深对理论知识的理解,只有真正的理解了所学的东西才能够把知识应用于实践。

这次的数据结构课程设计,使我看到了我在学习中的许多偏差,只注重理论不注重实践是学习的一大弊端。

我的学习只是一个能用笔杆子写写,不能把知识应用于实践的纸上谈兵似的学习,这也是我所担心的问题,过于重视理论的学习!

在以后的学习中我会重视对动手能力的培养。

 

B07050310田坤

2009年7月3日

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 人力资源管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1