栈和队列的互相实现、以及带有GetMin的栈 Bertha 。 2021-09-26 13:12 260阅读 0赞 两个栈实现一个队列: 基本思路: 1. 创建两个栈A,B,A栈用来入栈,B栈用来出栈; 2. 入队列操作:a)A栈未满,直接入栈; b)A栈已满,B栈为空,将A栈中的元素全部出栈并入到B栈;c)A栈已满,B栈不为空,A栈扩容。 3. 出队列操作:a)B栈为空,A栈也为空,抛出异常“队列为空”;b)B栈为空,A栈不为空,将A栈中的元素全部入栈到B栈,然后B栈进行出栈操作;c)B栈不为空,直接出栈。 (把握栈和队列的区别:栈是先进后出,队列是先进先出) 两个队列实现一个栈: 基本思路: 1. 两个队列A,B。 2. 入栈操作:a)两个队列均为空,则选择A队列入队列;b)选择其中不为空的队列进行入队列操作。 3. 出栈操作:a)两个队列均为空,则抛出异常“栈为空”;b)将不为空的队列中的元素除最后一个元素外全部出队列,进入另一个空队列,然后剩下的最后的一个元素出队列。 在出栈和入栈操作中,始终保证了有一个空队列。 实现一个带有GetMin的栈: 基本思路: 1. 用两个栈实现,栈Data和Min; 2. 入栈操作:a)Data栈为空,直接将该数据压入到栈Data和栈Min;b)Data栈不为空,定义临时变量temp,temp等于待入栈的数据与Data栈顶元素中较小的元素值,然后将栈待入栈数据压入Data栈,temp元素压入Min栈。 3. 出栈操作:a)Data栈为空,抛出异常“栈为空”;b)不为空,Data栈出栈操作,Min栈出栈操作。 4. GetMin:a)Data栈为空,抛出异常“栈为空”;b)不为空,返回Min栈的栈顶个元素。
还没有评论,来说两句吧...