我正试图在C#中创建一个LinkedList。我是新手。你能帮我一下吗?我想做的是:我创建了Node类型的head和lastNode变量,并试图通过GetLastNode()
方法检查lastNode,将Node添加到之前的每个节点中。尽管如此,每次我尝试添加第二个元素时,head在到达GetLastNode()
时都会变为null。我不知道为什么会发生这种事。请帮我理解我错过的概念。
class MyLinkedList
{
Node head, lastNode;
public void Add(int new_value)
{
Node new_node = new Node(new_value);
MyLinkedList obj = new MyLinkedList();
lastNode = obj.GetLastNode();
if(lastNode == null)
{
lastNode = new_node;
this.head = new_node;
}
else
{
lastNode.next = new_node;
}
}
public Node GetLastNode()
{
Node currentNode = this.head;
if (currentNode == null)
lastNode = currentNode;
else
while (currentNode != null)
{
lastNode = currentNode;
currentNode = currentNode.next;
}
return lastNode;
}
}
head
和lastNode
不是全局的,它们是字段,对于MyLinkedList
的每个实例都会有所不同。在Add
中,您的a创建了MyLinkedList
的新实例(使用new
关键字(,该实例为GetLastNode()
返回null
,并将该null
分配给当前lastNode
,因此您将在if
:之前为当前lastNode
使用null
MyLinkedList obj = new MyLinkedList();
lastNode = obj.GetLastNode();
我想说你可以删除这几行。
此外,似乎GetLastNode
应该只返回lastNode
,因为您已经在Add
:上进行了所有需要的跟踪
public Node GetLastNode()
{
return lastNode;
}