【发布时间】:2020-07-09 17:20:27
【问题描述】:
我正在尝试在 C# 中创建一个 LinkedList。我是新来的。你能帮帮我吗?
我要做的是:我创建了 Node 类型的 head 和 lastNode 变量,并尝试通过 GetLastNode() 方法检查 lastnode 来将节点添加到每个前一个节点。虽然,每次我尝试添加第二个元素时,head 在到达GetLastNode() 时变为空。我不确定为什么会这样。请帮助我理解我遗漏的概念。
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;
}
}
【问题讨论】:
-
请告诉我们Node类
-
每次调用
Add()时,您似乎都在创建一个新的链表。这是为什么呢? -
您的
head字段不是全局的,它是MyLinkedList的属性,每次您创建新的MyLinkedList,调用GetLastNode()将使用您的新MyLinkedList的@ 987654330@字段
标签: c# oop data-structures linked-list