【数据结构】停车场管理(栈与队列)

概要设计

  1. 以栈模拟停车场,以队列模拟停车场外的便道
  2. 自定义数据结构,顺序栈与链队列

停车场模拟的过程大致描述如下:

      

初始化停车场栈、辅助栈和队列;
从终端读入数据
If(到达)
{
    判断停车场栈是否满;
    若停车场栈不满
	    将车辆信息入停车场栈,输出车辆在停车场栈中位置;
    否则
	    将车辆信息入队列,输出车辆在队列中位置;
}
else
{
	在停车场栈内查找要离去的车辆
	若找到
    {
        判断车辆所在位置
	    若在栈顶
        {
            将要出停车场栈车辆出停车场栈;
			输出其在停车场内停留时间及要缴纳的停车费用;
            若队列不空,将队头元素入停车场栈;
        }
        否则
        {
            将要出停车场栈车辆之前的车辆出停车场栈并压入辅助栈;
			将要出停车场栈车辆出停车场栈;
			输出其在停车场内停留时间及要缴纳的停车费用;
			还原停车场栈内元素;
			若队列不空,将队头元素入停车场栈;
        }
    }
    否则
	{
        判断辅助栈是否为空;
		若非空则将辅助栈内元素压入停车场栈;
		判断队头元素是否为目标车辆
		若是
			将目标车辆出队;
		否则
        {
			将目标车辆之前的车辆出队再入队;
			将目标车辆出队;
			继续将队列内车辆出队再入队,直至队头元素为初始状态;
        }
}

 

  • 编程要点及调试分析
  1. 对栈只能访问到其栈顶元素,因此在查找车辆时要借助辅助栈,将目标车辆之前元素全部压入辅助栈,待对目标车辆进行出栈操作之后,再将辅助栈内元素压入原栈。
  2. 对于队列这种数据结构,只能在队尾插入元素,在队头删除元素。 

    该算法的时间复杂度为O(n),其中n为栈或队列内元素个数。

 

源代码请查看:https://download.csdn.net/download/qq_42047140/11111934

P.S. 本人才疏学浅,如有错误欢迎大家评论,批评指正 (*^▽^*)

 

你可能感兴趣的:(数据结构)