Java 创建新的堆栈操作

Java 创建新的堆栈操作,java,time,stack,Java,Time,Stack,我正在做一个练习堆栈问题,涉及两个堆栈。堆栈S和堆栈T,它希望我们基本上做一个名为bottom的新操作,返回但不删除S的底部元素。所以,我对这个问题的分析以及如何进行这项工作是首先用元素填充堆栈。下一步是用堆栈的所有元素填充堆栈T,但顺序相反,这样现在底部在顶部。我的问题是,我知道如何创建初始堆栈S,但我不知道如何以相反的顺序填充堆栈T。另外,如果在弹出时重复从堆栈S中弹出元素并将它们推到堆栈T上,那么当S为空时,T将包含过去在S中的元素,但顺序相反 S T | 1 | ---

我正在做一个练习堆栈问题,涉及两个堆栈。堆栈S和堆栈T,它希望我们基本上做一个名为bottom的新操作,返回但不删除S的底部元素。所以,我对这个问题的分析以及如何进行这项工作是首先用元素填充堆栈。下一步是用堆栈的所有元素填充堆栈T,但顺序相反,这样现在底部在顶部。我的问题是,我知道如何创建初始堆栈S,但我不知道如何以相反的顺序填充堆栈T。另外,如果在弹出时重复从堆栈S中弹出元素并将它们推到堆栈T上,那么当S为空时,T将包含过去在S中的元素,但顺序相反

  S      T

| 1 |  -----
| 2 |
| 3 |
-----
T.push(S.pop())
=>

  S      T

| 2 |  | 1 |
| 3 |  -----
-----
  S      T

| 3 |  | 2 |
-----  | 1 |
       -----
  S      T

-----  | 3 |
       | 2 |
       | 1 |
       -----
T.push(S.pop())
=>

  S      T

| 2 |  | 1 |
| 3 |  -----
-----
  S      T

| 3 |  | 2 |
-----  | 1 |
       -----
  S      T

-----  | 3 |
       | 2 |
       | 1 |
       -----
T.push(S.pop())
=>

  S      T

| 2 |  | 1 |
| 3 |  -----
-----
  S      T

| 3 |  | 2 |
-----  | 1 |
       -----
  S      T

-----  | 3 |
       | 2 |
       | 1 |
       -----
运行时间与S中的元素数呈线性关系

堆栈S和堆栈T,它希望我们基本上做一个新的操作 调用bottom,返回但不删除s的底部元素

我不知道如何在不违反
Stack
操作的基础上直接实现这一点。您应该让用户查看的唯一内容(不删除也不删除)是堆栈顶部的元素

如果您想让用户看到底部的内容,则需要另一个堆栈,在该堆栈中,从S推送所有弹出的元素。然后,这个新堆栈顶部的内容就是堆栈底部的内容

现在,这似乎引出了你的第二个问题,不是吗?

请考虑这个可能的解决方案:
1.您将有一个名为
intpushinto(stacks,stackt)

2.当用户想要查看堆栈的底部元素时,调用此方法。
3.然后,此方法将返回堆栈T顶部的元素,即S的底部。
4.此方法需要与以下方法结合使用:
int-getBottomElement(堆栈S)


我想一举两得

我做的第一件事就是谷歌
java stack
-你做了什么?谢谢!这段代码摘录真的很有帮助,因为我一直在研究如何将堆栈中的每个元素从S移到T,现在一切都有了意义。