【发布时间】:2015-05-19 09:10:56
【问题描述】:
假设一个最初为空的栈 S 总共执行了 25 次压栈操作, 12个top操作,10个pop操作,其中3个返回null表示一个 空堆栈。 S的当前大小是多少?
我认为 S.size =7 因为 10 个弹出操作中有 10 个返回 null 以表示 空堆栈但不确定它是否正确
谁能给出正确答案和解释?
【问题讨论】:
标签: algorithm data-structures stack
假设一个最初为空的栈 S 总共执行了 25 次压栈操作, 12个top操作,10个pop操作,其中3个返回null表示一个 空堆栈。 S的当前大小是多少?
我认为 S.size =7 因为 10 个弹出操作中有 10 个返回 null 以表示 空堆栈但不确定它是否正确
谁能给出正确答案和解释?
【问题讨论】:
标签: algorithm data-structures stack
10-3 = 7 个元素,因为弹出了 3 个
没有改变堆栈的状态(和大小),所以只有 7 次弹出。堆栈的总大小最后是25-7 = 18。
请注意,操作顺序无关紧要,只有“成功”pop()s 的数量和push()s 的数量。
【讨论】:
pop(), pop(), pop(), push() * 25, pop()*7, top()*12。前 3 个 pop() 返回 null 并且不更改堆栈的大小,只有最后 7 个会这样做。这是一个满足问题中描述的条件的有效示例。
25 次推送 = 25 次索引
10 次弹出 = 25 - 10 = 15
未发生 3 次弹出 = 15 + 3 = 18
tops无所谓,所以应该是18
【讨论】:
就是push和pop的次数之差。
【讨论】: