概要设计
- 以栈模拟停车场,以队列模拟停车场外的便道
- 自定义数据结构,顺序栈与链队列
停车场模拟的过程大致描述如下:
初始化停车场栈、辅助栈和队列;
从终端读入数据
If(到达)
{
判断停车场栈是否满;
若停车场栈不满
将车辆信息入停车场栈,输出车辆在停车场栈中位置;
否则
将车辆信息入队列,输出车辆在队列中位置;
}
else
{
在停车场栈内查找要离去的车辆
若找到
{
判断车辆所在位置
若在栈顶
{
将要出停车场栈车辆出停车场栈;
输出其在停车场内停留时间及要缴纳的停车费用;
若队列不空,将队头元素入停车场栈;
}
否则
{
将要出停车场栈车辆之前的车辆出停车场栈并压入辅助栈;
将要出停车场栈车辆出停车场栈;
输出其在停车场内停留时间及要缴纳的停车费用;
还原停车场栈内元素;
若队列不空,将队头元素入停车场栈;
}
}
否则
{
判断辅助栈是否为空;
若非空则将辅助栈内元素压入停车场栈;
判断队头元素是否为目标车辆
若是
将目标车辆出队;
否则
{
将目标车辆之前的车辆出队再入队;
将目标车辆出队;
继续将队列内车辆出队再入队,直至队头元素为初始状态;
}
}
- 编程要点及调试分析
- 对栈只能访问到其栈顶元素,因此在查找车辆时要借助辅助栈,将目标车辆之前元素全部压入辅助栈,待对目标车辆进行出栈操作之后,再将辅助栈内元素压入原栈。
- 对于队列这种数据结构,只能在队尾插入元素,在队头删除元素。
该算法的时间复杂度为O(n),其中n为栈或队列内元素个数。
标签:队头,辅助,队列,元素,停车场,车辆,数据结构 来源: https://blog.csdn.net/qq_42047140/article/details/89278768
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。