【发布时间】:2020-09-06 07:19:01
【问题描述】:
我正在尝试创建一种反转链接列表的方法。我有一个创建链表的类
public class LinkedList<t> {
public class Node {
t item;
Node next;
}
private Node firstNode;
public Node getFirstNode() { return this.firstNode; }
public void appendToTail(t item){
if(this.firstNode == null){
this.firstNode = new Node();
this.firstNode.item = item;
return;
}
Node current = this.firstNode;
while(current.next != null){
current = current.next;
}
current.next = new Node();
current.next.item = item;
}
}
反转链表的方法在我的“Main”类中
public static LinkedList reverseLinkedList(LinkedList<Integer> l){
LinkedList.Node current = l.getFirstNode();
LinkedList<Integer> reverse = new LinkedList<Integer>();
LinkedList.Node head = reverse.getFirstNode();
while(current != null){
LinkedList.Node newHead = new reverse.Node();
newHead.item = current.item;
newHead.next = head;
head = newHead;
current = current.next;
}
return reverse;
}
对于我想在新反向链表前面添加的每个新节点,我需要创建一个包含在“LinkedList”类中的“Node”类的新实例。 “Node”类不能是静态的,因为它的“item”属性设置为与“LinkedList”类型相同的泛型类型。所以,我需要一个“LinkedList”类的实例,这样我就可以访问“Node”类并创建它的对象。在上面的代码中,我使用了“LinkedList”上的“reverse”实例来做到这一点。但我收到一条错误消息,提示 “包反向不存在”。这一定是因为我试图将它用作一个包。我该如何解决这个问题?
我必须能够通过将“Node”类与“LinkedList”分开来解决这个问题。无论如何我可以不这样做吗?
【问题讨论】:
-
在这里不将
Node定义为静态可能是个坏主意。
标签: java linked-list