数据结构实验--停车场管理

数据结构实验

第一章 个人图书信息管理系统
第二章 停车场管理
第三章 哈夫曼编码



前言

栈:只能在表的一端(栈顶)进行插入和删除运算的线性表。逻辑结构为一对一顺序栈存储结构更常见。
运算规则:LIFO/FILO
基本操作有:入栈、出栈、读栈顶单元、栈空等等。

队列:在队尾进行插入,在队头进行删除的线性表。逻辑结构为一对一顺序队列链表存储均可。
运算规则:FIFO
基本操作:入队、出队

一、需求分析

以栈模拟停车场,以队列模拟停车场外的便道;
栈以顺序结构实现,队列以链表结构实现


二、概要设计

1.设计停车场顺序栈的抽象数据类型定义

ADT Carstack{
数据对象:D={a[i] | a[i]∈ElemSet,i=1,2,3…MAXSIZE}
数据关系:R1={<a[i-1],a[i]> | a[i-1],a[i]∈D,i=1,2,…,MAXSIZE}
约定an端为栈顶,a1端为栈底。
基本操作:
InitStack(CarStack *S);
操作结果:构造一个空的顺序栈S。
DestroyStack(CarStack *S);
初始条件:顺序栈S已存在
操作结果:销毁栈S。
Push(CarStack *S,LinkQueue *Q,char flag,int id,int time);
初始条件:顺序栈S、T,链队Q已存在
操作结果:在顺序栈S的栈顶插入新的车辆信息。
Pop(CarStack *S,TempStack *T,LinkQueue *Q,char flag,int id,int time);
初始条件:顺序栈S、T,链队Q已存在
操作结果:符合条件的车辆进行出栈操作。

}

2.设计便道链队抽象数据类型定义

ADT LinkQueue{
数据对象:D={a[i] | a[i]∈ElemSet,i=1,2,3…MAXSIZE}
数据关系:R1={a[i] = a[i-1]->next | a[i-1],a[i]∈D,i=1,2,…,MAXSIZE}
约定a1端为队列头,an端为队列尾。
基本操作:
InitQueue(LinkQueue *Q);
操作结果:构造一个空的链队Q。
DestroyQueue(LinkQueue *Q);
初始条件:链队Q已存在
操作结果:销毁链队Q。
EnQueue(CarStack *S,LinkQueue *Q,char flag,int id,int time);
初始条件:顺序栈S,链队Q已存在
操作结果:插入新的链队Q的队尾元素。
}

3.设计临时停放区顺序栈的抽象数据类型定义

ADT TempStack{
数据对象:D={a[i] | a[i]∈ElemSet,i=1,2,3…MAXSIZE}
数据关系:R1={<a[i-1],a[i]> | a[i-1],a[i]∈D,i=1,2,…,MAXSIZE}
约定an端为栈顶,a1端为栈底。
基本操作:
InitTemp(TempStack *T);
操作结果:构造一个空的顺序栈T。
void DestroyTemp(TempStack *T);
初始条件:顺序栈T已存在
操作结果:销毁栈T。
}

4.模块划分

(1)主程序模块

int main(void)
{
    初始化;
    输入;
    while(命令 != 退出)
    {
        判断命令;
        执行命令;
        输入;
	}
	销毁;
} 

(2)顺序栈S模块

(3)链队Q模块

(4)顺序栈T模块

(5)各模块之间的调用关系

在这里插入图片描述


三、详细设计

#
  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BUPT_bo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值