【发布时间】:2019-05-06 13:44:10
【问题描述】:
我有一个给定的链接列表,我需要通过 getFirst 方法找到列表中的第一个值。如果值为 null,我需要显示错误消息并退出程序。链接列表已经给了我链接,所以:
class MyLinkedList
{
private class Node // inner class
{
private Node link;
private int x;
}
//----------------------------------
private Node first = null; // initial value is null
//----------------------------------
public void addFirst(int d)
{
Node newNode = new Node(); // create new node
newNode.x = d; // init data field in new node
newNode.link = first; // new node points to first node
first = newNode; // first now points to new node
}
//----------------------------------
public void traverse()
{
Node p = first;
while (p != null) // do loop until p goes null
{
System.out.println(p.x); // display data
p = p.link; // move p to next node
}
}
}
//==============================================
class TestMyLinkedList
{
public static void main(String[] args)
{
MyLinkedList list = new MyLinkedList();
list.addFirst(1);
list.addFirst(2);
list.addFirst(3);
System.out.println("Numbers on list");
list.traverse();
}
}
这是我尝试的方法:
public static Node getFirst(Node list)
{
if (list == null)
{
System.out.println("Error!");
System.exit(1);
}
return MyLinkedList.first;
}
我知道这并不完全正确,我们刚在课堂上开始这样做,所以我无法理解它发生了什么。谢谢!
【问题讨论】:
-
您实际上拥有的只是一个节点,您不断替换第一个节点,因此其他东西都丢失了。也许你应该有一个指向第一个节点和最后一个节点的指针?这样您就可以立即添加到末尾或沿两个不同的方向遍历
-
请阅读minimal reproducible example 并相应地增强您的问题。 “不完全正确”不是正确的问题描述。
标签: java methods linked-list