如何抓住队列的头部并将项目添加到最后?
我制作了一个名为add的方法
add(Node<E> head, E item) {
}
class Node<E> {
E item;
Node<E> next;
Node(E item, Node<E> next) {
this.item = item;
this.next = next;
}
}
答案 0 :(得分:1)
最后一个节点是没有下一个元素的节点,即next == null
。
给定节点head
,然后可以遍历所有下一个元素,直到我们到达next == null
的那个元素。因此,要在最后添加元素,请将当前最后一个元素的next
变量设置为添加的元素,并将其next
变量设置为null
(以表示它是&#39;是新的最后一个元素。)
private static <E> void add(Node<E> head, E item) {
Node<E> last = head;
while (last.next != null) {
last = last.next;
}
last.next = new Node<>(item, null);
}
测试代码:
public static void main(String[] args) throws Exception {
Node<String> node = new Node<>("1", new Node<>("2", null));
System.out.println(node); // prints 1 -> 2
add(node, "3");
System.out.println(node); // prints 1 -> 2 -> 3
}
添加toString()
以下Node
:
class Node<E> {
E item;
Node<E> next;
Node(E item, Node<E> next) {
this.item = item;
this.next = next;
}
@Override
public String toString() {
return item + (next == null ? "" : " -> " + next);
}
}
答案 1 :(得分:0)
由于节点具有对其下一个节点的引用,因此您需要遍历它直到结束。
如果结尾为null,则可以使用while循环:
void add(Node<E> head, E item)
{
// head.next == null means we reached the end
while (head.next != null)
{
/*
* Note that the "real" head is not changed by that, we just assign
* a new value to head
*/
head = head.next;
}
/*
* the parameter head is now set to the last node, so we can set the
* item
*/
head.item = item;
// or if you want to add an new node
head.next = new Node<>(item, null);
}