首页 > 代码库 > 如何理解栈(栈的实现方式)
如何理解栈(栈的实现方式)
网上看到的一段对话,写的很清晰,一目了然。
Frank: 什么是栈?
Linda: 它是一种数据结构,按先进后出(或后进先出)的方式收集对象。它通常有一个 API,其中包括 push()
和 pop()
等方法。有时也有peek()
方法。
Frank: push()
有什么功能?
Linda: push()
接受一个输入对象,比如说 foo
,并将它放入到一个内部容器(例如一个数组)中。push()
通常不返回结果。
Frank: 如果我 push()
两个对象,比如先是 foo
,然后是 bar
,结果会怎样?
Linda: 第二个对象 bar
应该在栈(至少包含两个对象)的顶部,所以如果调用 pop()
,那么返回的应该是 bar
,而不是 foo
。如果再次调用pop()
,那么应该返回 foo
,然后栈为空(假设在添加这两个对象之前栈中没有对象)。
Frank: 也就是说,pop
移除最近放入栈中的项目?
Linda: 是的,pop()
应该移除最上面的项目(假设栈中还有可移除的项目)。peek()
与此类似,只是不移除栈中的对象。peek()
应该保留栈顶的项目。
Frank: 如果之前没有 push 任何项目,那么调用 pop()
时会怎样?
Linda: pop()
应该抛出一个异常,表明栈中尚未 push 任何项。
Frank: 如果 push()
null
会怎样?
Linda: 栈应该抛出一个异常,因为 null
不是一个有效的可 push()
的值。
如何理解栈(栈的实现方式)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。