数据结构实验
第一章 个人图书信息管理系统
第二章 停车场管理
第三章 哈夫曼编码
第二章 停车场管理
前言
栈:只能在表的一端(栈顶)进行插入和删除运算的线性表。逻辑结构为一对一,顺序栈存储结构更常见。
运算规则: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已存在<