C# 方法调用后返回Null的全局声明变量
我正在尝试用C#创建一个LinkedList。我是新来的。你能帮我吗? 我试图做的是:我已经创建了节点类型head和lastNode变量,并试图通过C# 方法调用后返回Null的全局声明变量,c#,oop,data-structures,linked-list,C#,Oop,Data Structures,Linked List,我正在尝试用C#创建一个LinkedList。我是新来的。你能帮我吗? 我试图做的是:我已经创建了节点类型head和lastNode变量,并试图通过GetLastNode()方法检查lastNode来将节点添加到以前的每个节点。尽管如此,每次我尝试添加第二个元素时,head在到达GetLastNode()时都会变为null。我不知道为什么会这样。请帮助我理解我遗漏的概念 class MyLinkedList { Node head, lastNode;
GetLastNode()
方法检查lastNode来将节点添加到以前的每个节点。尽管如此,每次我尝试添加第二个元素时,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
的每个实例都是不同的。在中,添加您的a创建MyLinkedList
的新实例(使用new
关键字),该实例返回GetLastNode()
的null
,并将该null
分配给当前lastNode
,因此,对于当前的lastNode
,您将在之前使用null
,如果
:
MyLinkedList obj=new MyLinkedList();
lastNode=obj.GetLastNode();
我想你可以删除这行
另外,似乎GetLastNode
应该只返回lastNode
,因为您已经在Add
上执行了所有需要的跟踪:
public节点GetLastNode()
{
返回最后一个节点;
}
请向我们显示节点类别每次调用Add()
时,您似乎都在创建一个新的链接列表。这是为什么?您的head
字段不是全局的,它是MyLinkedList
的属性,每次创建新的MyLinkedList
,调用GetLastNode()
将使用您的新MyLinkedList
head
field@AbhaJha我很乐意帮忙!