请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

正在回答 回答被采纳积分+3

3回答

求老仙 2020-03-21 00:30:52

hello同学, 取栈顶元素默认的方法是pop(),这个是约定俗成。老师不用pop,说明不是去栈顶哈哈。 peek因为要去第一个入栈的元素(也就是栈底)。 为什么取第一个入栈的呢?因为第一个被放回的元素,从时间上说,就是下一个元素啊, 第二个被放回的元素,从时间上说,是下下个元素啊,以此类推。 

1 回复 有任何疑惑可以回复我~
  • 时间上越后进栈的元素为什么不是离我们正在看的元素更近呢。。。就好比看了ABCD,把DC放回去了,这个时候离B最近的不是C嘛
    回复 有任何疑惑可以回复我~ 2020-03-21 03:01:08
  • 老师我明白了.......谢谢老师!
    回复 有任何疑惑可以回复我~ 2020-03-21 03:56:17
  • 求老仙 回复 提问者 摇了摇头摇了摇头 #3
    同学很用功!赞
    回复 有任何疑惑可以回复我~ 2020-03-21 09:02:44
律吕 2020-08-18 16:51:55

朋友,你懂了吗,我感觉你说的是对的,我觉得应该是 getLast()

0 回复 有任何疑惑可以回复我~
无心铁憨憨 2020-03-20 22:55:11

队列     栈
A         D

B         C

C         B

D         A

因为是将队列中的元素取出放到栈中,队列跟栈的结构是相反的,所以取出来的顺序也是相反的啦,本来队列中队首的元素是A,我想看的也是A,但是A被放到栈中去了,所以,就是getFirst了

0 回复 有任何疑惑可以回复我~
  • peek是看下一个的意思吧?如果ABCD全被放回去了的话,此时如果要向看下一个应该是看到A吧?A应该是处于栈顶的位置啊。
    回复 有任何疑惑可以回复我~ 2020-03-20 23:05:16
  • 你这样想,实际上不管是队列还是栈,它都是一个链表,你看声明都是linkedlist。
    
    初始状态,栈中没有元素,队列中也没有元素
    
    假设你第一次调用peek,栈中没有元素,就会调用next方法,从流中读取元素并返回,然后next方法会讲元素存放到队列中,然后再调用putBack方法,将队列中的最后一个元素放入栈中,然后你下次再peek,就直接从栈中取出第一个存放进行的元素了。
    这个类的代码是有些绕,需要好好阅读一下
    回复 有任何疑惑可以回复我~ 2020-03-20 23:29:06
  • 这块,我可能讲的不太清楚,如果实在不理解,可以尝试小窗私聊下老师
    回复 有任何疑惑可以回复我~ 2020-03-20 23:30:36
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信