【发布时间】:2016-01-29 09:27:19
【问题描述】:
我需要帮助来理解这一点。我知道如何实现队列,但有一小部分困扰着我。我在我的笔记本上画了事情是如何工作的流程,但是如果没有我设置它,我不明白头部是如何拥有 nextNode 的。头如何指向下一个节点?
public void enqueue(T data){
count++;
Node<T> current = tail;
tail = new Node<>(data);
if(isEmpty()) {
///////////////////////////////////////////////////////////////////////////////
// when this runs, doesn't head.getNextNode point to null?
// if the list is empty, then tail is null.
// On the deque method, I can sout head.getNextNode() and I get data back, how?
///////////////////////////////////////////////////////////////////////////////
head = tail;
} else {
current.setNextNode(tail);
}
}
下面,dequeing 工作正常,我想我在理解整个引用/指针的事情时遇到了问题
public T dequeue() {
if(isEmpty()) {
return null;
}
count--;
T dataToRemove = head.getData();
/////////////////////-+{[UPDATE]}+-////////////////////////////////
// WHERE DOES HEAD GET THE NEXT NODE FROM? THIS WORKS, BUT WHERE IS
// THE NEXT NODE COMING FROM IS WHAT I'M ASKING?
///////////////////////////////////////////////////////////////////
head = head.getNextNode();
return dataToRemove;
}
【问题讨论】:
-
Java 不支持指针。每当您在 Java 中创建对象时,实际上是在创建指向该对象的指针,然后可以将该指针设置为不同的对象或 null
-
@StefanBeike 在java中有参考stackoverflow.com/questions/1750106/…
-
所以您试图询问如何从 head 获取下一个节点,即使该节点不存在。??
-
我在问为什么不设置就可以得到nextnode。 nextnode 在哪里设置?该代码无需我调用 head.setNextNode()... 即可工作
-
"Java 不支持指针" -- Java 中充满了指针。 Object 上的每个句柄都是一个指针。它不支持所有与 C++ 相同的指针操作,但它确实支持指针。
标签: java algorithm pointers data-structures queue