Java 在堆栈数据结构上存储新元素时.next如何工作?[爪哇]

Java 在堆栈数据结构上存储新元素时.next如何工作?[爪哇],java,stack,Java,Stack,我正在学习实现堆栈,我正在努力理解“下一步”的真正含义。我在很多数据结构中都见过它,很明显它的用途是什么,直到我问自己它是不是一个关键字或者它是如何工作的。它看起来像是一个对象,但看起来像是链接列表中指向所创建的每个项对象的指针 请尽你所能帮助我澄清我的困惑 class Item { intdata; Item next; public Item(int data) { this.data = data; } } public class St

我正在学习实现堆栈,我正在努力理解“下一步”的真正含义。我在很多数据结构中都见过它,很明显它的用途是什么,直到我问自己它是不是一个关键字或者它是如何工作的。它看起来像是一个对象,但看起来像是链接列表中指向所创建的每个项对象的指针

请尽你所能帮助我澄清我的困惑

class Item {
    intdata;
    Item next;

    public Item(int data) {
        this.data = data;
    }
}

public class Stack {

   private Item top;

   public void push(int data) {
       if (null == top) {
           top = new Item(data);
       } else {
           Item item = new Item(data);
           item.next = top;
           top = item;
       }
   }
}

试想一下,如果你有两个初始原始数据1和2。另一方面,我告诉你把所有的自然数映射为项目,然后把它们放进一个堆栈

考虑到,你可能会想到,比如说,两个目前不相关的项目对象,如——

Item item1 = new Item(1);

然后当你把它们放入堆栈时,你推送item1,最终推送item2。类似地,您可能已经推送了N个数据

现在,为了让你们更聪明一点,我想让你们记住,当你们从堆栈中弹出一个元素时,下一个可能的元素是什么,看看我们是否需要从堆栈中弹出更多的元素。[假设只需要显示大于5的元素]

这就是两个项目之间的关系变得有用的地方。您将一个项目指向下一个项目,同时将其推入堆栈以保持对该项目的引用。你也是这样做的:-

item2.setNext(item1); // using setter for 'next'
这最终意味着在访问item2时,您实际上可以知道它指向的下一个项目,即item1


PS:与item2.setNextitem1相同的实现在代码的push方法中得到了推广,该方法接受数据并在每次调用Item时创建一个新的Item实例。

它看起来像是一个对象,但看起来像是链接列表中指向所创建的每个Item对象的指针。你没有困惑。这是100%正确的好吧,这是一个物体。你不清楚你对什么感到困惑,请解释清楚。每个项下都有一个字段,其类型为Item,是对另一项的引用。还有什么不清楚的?而且,no next不是关键字:它是Item类的成员字段的名称。你可以随意称呼它:link,previous,boogaboga,随便什么,关键是它是程序员选择的名字,而不是语言强加的保留字或关键字;在Item类中,正在声明一个成员字段,该字段的类型为Item引用。如果你熟悉C++的引用,例如,项目,这是一个相同的一般想法。请不要这样,除非你想更困惑。凯文安德森是不精确的。java中的引用就像C++指针,只有指针是隐藏的。java没有任何与C++引用等价的东西。
item2.setNext(item1); // using setter for 'next'