好文档 - 专业文书写作范文服务资料分享网站

数据结构停车场管理实验报告

天下 分享 时间: 加入收藏 我要投稿 点赞

停车场管理实验报告

姓名: 学号:

学院:继续教育学院 班级:计算机科学与技术

一. 实验目的和要求

熟练栈和队列的结构特性,掌握在实际问题背景下的应用 二. 实验主要内容

以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“达到”或“离去”信息、汽车牌照号码以及达到或离去的时刻。对每一组输入数据进行操作后的输出信息为:若是车辆达到、则输出汽车在停车场内或便道上停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。栈以顺序结构实现,队列以链表结构实现。 ,

三. 实验仪器和环境

PC机 Windows xp Visual c++ c语言 四.实验原理 1.概要设计

(1)抽象数据类型定义 ADT Stack{

数据对象:D={ai|ai ∈ElemSet, i=1,2,…n;n>0} 数据关系:R1={|ai-1,ai ∈D,i=2,…n} (

基本操作:

InitStack(&S)

操作结果:构造一个空栈S。 Push(&S,e)

初始条件:栈S已存在。

操作结果:插入e为新的栈顶元素 Pop(&S,&e)

初始条件:栈S已存在。 |

操作结果:删除S的栈顶元素,并且用e返回。

}ADT Stack ADT Queue {

数据对象:D={ai|ai ∈ElemSet, i=1,2,…n; n>0}

数据关系:R1={|ai-1,ai ∈D, i=2,…n}其中:a1为队头, an为队尾 基本操作:

InitQueue(&Q);

操作结果:构造一个空队列Q

<

EnQueue(&Q,&e);

初始条件:对列Q已存在。

操作结果:插入元素e为Q的新队尾元素。

DeQueue(&Q,&e);

初始条件:对列Q已存在。

操作结果:删除Q的队头元素, 并用e返回。 }ADT Queue

(2)本程序包含七个模块: · <1>主程序模块,其中主函数为 Void main(){ 初始化; 构造空栈; 输入已知数据; 插入数据入栈; 分析

{入栈;出栈;入队;出队;}

输出数据; }

<2>构造栈模块-----构造一个空栈;

栈插入模块-----插入新的数据元素; 栈删除模块-----删除指定的数据元素;

构造队列模块-----构造一个空队列;

队列插入模块-----插入新的数据元素; 队列删除模块-----删除指定的数据元素; {

(3)各模块之间的调用关系如下:

主函数模块 分析 构造栈模块 栈插入模块 栈删除模块 构造队列模块 队列插入模块 * 2.详细设计 <1>类型定义

#define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 #define MONEY 5 typedef int Status; …

typedef struct ElemType{

char a[3]; int num;

int time; }ElemType;

typedef struct SqStack {

ElemType *base; }LinkQueue;

QueuePtr rear;//队尾指针

<2>栈和队列的基本操作

Status InitStack(SqStack &S) //构造一个空栈

Status Push(SqStack &S,ElemType e) //插入元素e为新的栈顶元素

Status Pop(SqStack &S,ElemType &e) …

//若栈不空,则删除S的栈顶元素,用e 返回其值,并返回OK;否则返回ERROR Status InitQueue(LinkQueue &Q)

//构造一个空队列Q

Status EnQueue(LinkQueue &Q,ElemType e)

//插入元素e为Q的新队列

Status DeQueue(LinkQueue &Q,ElemType &e)

//若队列不空,则删除Q的对头元素,用e返回其值,并返回Ok;否则返回ERROR; <3>部分操作的算法 、

Status InitStack(SqStack &S){//构造一个空栈

=(ElemType *)malloc(STACK_INIT_SIZE*sizeof(ElemType)); if(! exit (OVERFLOW); =; =STACK_INIT_SIZE; return OK; }

Status Push(SqStack &S,ElemType e){//插入元素e为新的栈顶元素 }

if栈满,追加存储空间

=(ElemType *)realloc,+STACKINCREMENT)*sizeof(ElemType));

if(! exit(OVERFLOW);//存储分配失败 =+; +=STACK_INIT_SIZE; } *++=e; return OK; }

Status Pop(SqStack &S,ElemType &e){

//若栈不空,则删除S的栈顶元素,用e 返回其值,并返回OK;否则返回ERROR if== return OK; e=*;

return OK; }

//----------------队列 -

Status InitQueue(LinkQueue &Q){//构造一个空队列Q ==(QueuePtr)malloc(sizeof(QNode)); if(! exit (OVERFLOW);//存储分配失败 >next=NULL; return OK; }

Status EnQueue(LinkQueue &Q,ElemType e){//插入元素e为Q的新队列 p=(QueuePtr)malloc(sizeof(QNode));//存储分配失败 )

if(!p) exit(OVERFLOW); p->data=e;p->next=NULL; >next=p; =p; return OK; }

Status DeQueue(LinkQueue &Q,ElemType &e){

//若队列不空,则删除Q的对头元素,用e返回其值,并返回Ok;否则返回ERROR; } }

<

if== return ERROR; p=>next; e=p->data; >next=p->next; if==p) =; free(p); return OK;

五.源程序 #include <> #include <> #include <> #include <>

//------------------------函数结果状态代码 #define TRUE 1 }

#define FALSE 0 #define OK 1 #define ERROR 0

#define TNFEASIBLE -1

#define OVERFLOW -2

//Status 是函数的类型,其值是函数结果状态代码 typedef int Status;

#define STACK_INIT_SIZE 100 ^

#define STACKINCREMENT 10 #define MONEY 5

typedef struct ElemType{ char a[3]; int num; int time; }ElemType;

typedef struct SqStack { ~

ElemType *base;//在栈构造之前和销毁之后,base的值为NULL ElemType *top;//栈顶指针

int stacksize;//当前已经分配的存储空间,以元素为单位 }SqStack;//栈的表示 typedef struct QNode{ ElemType data; struct QNode *next;

}QNode,*QueuePtr;//队列的表示 、

typedef struct LinkQueue{

QueuePtr front;//队头指针 QueuePtr rear;//队尾指针 }LinkQueue;

//-----------------基本操作的实现 //-----------------栈

Status InitStack(SqStack &S){//构造一个空栈

=(ElemType *)malloc(STACK_INIT_SIZE*sizeof(ElemType)); \

if(! exit (OVERFLOW); =; =STACK_INIT_SIZE; return OK; }//InitStack

Status Push(SqStack &S,ElemType e){//插入元素e为新的栈顶元素 if栈满,追加存储空间 =(ElemType *)realloc,+STACKINCREMENT)*sizeof(ElemType)); ~

if(! exit(OVERFLOW);//存储分配失败 =+;

+=STACK_INIT_SIZE;

数据结构停车场管理实验报告

停车场管理实验报告姓名:学号:学院:继续教育学院班级:计算机科学与技术一.实验目的和要求熟练栈和队列的结构特性,掌握在实际问题背景下的应用二.实验主要内容以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行
推荐度:
点击下载文档文档为doc格式
0x2c62zzt53fre38hic91cf865brly010kl
领取福利

微信扫码领取福利

微信扫码分享