采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师好~这里peek方法是看栈顶元素吧?不应该是getLast吗?
hello同学, 取栈顶元素默认的方法是pop(),这个是约定俗成。老师不用pop,说明不是去栈顶哈哈。 peek因为要去第一个入栈的元素(也就是栈底)。 为什么取第一个入栈的呢?因为第一个被放回的元素,从时间上说,就是下一个元素啊, 第二个被放回的元素,从时间上说,是下下个元素啊,以此类推。
时间上越后进栈的元素为什么不是离我们正在看的元素更近呢。。。就好比看了ABCD,把DC放回去了,这个时候离B最近的不是C嘛
老师我明白了.......谢谢老师!
同学很用功!赞
朋友,你懂了吗,我感觉你说的是对的,我觉得应该是 getLast()
队列 栈A D
B C
C B
D A
因为是将队列中的元素取出放到栈中,队列跟栈的结构是相反的,所以取出来的顺序也是相反的啦,本来队列中队首的元素是A,我想看的也是A,但是A被放到栈中去了,所以,就是getFirst了
peek是看下一个的意思吧?如果ABCD全被放回去了的话,此时如果要向看下一个应该是看到A吧?A应该是处于栈顶的位置啊。
你这样想,实际上不管是队列还是栈,它都是一个链表,你看声明都是linkedlist。 初始状态,栈中没有元素,队列中也没有元素 假设你第一次调用peek,栈中没有元素,就会调用next方法,从流中读取元素并返回,然后next方法会讲元素存放到队列中,然后再调用putBack方法,将队列中的最后一个元素放入栈中,然后你下次再peek,就直接从栈中取出第一个存放进行的元素了。 这个类的代码是有些绕,需要好好阅读一下
这块,我可能讲的不太清楚,如果实在不理解,可以尝试小窗私聊下老师
登录后可查看更多问答,登录/注册
轻松超越大学课程,前阿里P8专家的实践精华总结
980 13
1.3k 12
1.0k 7
839 5
1.2k 5