[英]How does .next work when storing a new element on the stack data structure? [Java]
我正在学习实现堆栈,并且正在努力了解.next的真正含义。 我已经在许多数据结构中看到了它,很明显,它的目的是什么,直到我真正问自己这是否是一个关键字或它是如何工作的。 看起来它是一个对象,但它的行为就像是指向创建的每个item
对象的指针(如LinkedList中的指针)。
请以任何方式帮助您了解我的困惑!
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
,然后将其放入堆栈中。
考虑一下,您可能只想出两个当前不相关的Item
对象,它们是-
Item item1 = new Item(1);
和
Item item2 = new Item(2);
然后将它们放入Stack
,您推入item1
,最终将推入item2
。 类似地,您可能已经推送了N个数据。
现在,为了使您更聪明,我想请您记住从Stack
pop
一个元素时可能出现的next
元素,只是看看我们是否需要从该堆栈中弹出更多元素。 [假设需要仅显示大于5的元素]
这就是两个项目之间的关系将变得有用的地方。 您将一个项目指向下一个项目,同时将它们推入堆栈以保持相同的引用。 所以你这样做:
item2.setNext(item1); // using setter for 'next'
这最终意味着在访问item2
您实际上可以知道它指向的下一个Item
,即item1
。
PS :与item2.setNext(item1)
相同的实现在代码的push
方法中得到了概括,该方法接受数据并在每次调用时创建Item
的新实例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.