【发布时间】:2019-01-13 00:05:57
【问题描述】:
我一直在努力开发自己的单链表,我不明白如何将节点插入到链表的末尾?
代码如下:
class LinkedList
{
private Node head;
public void AddLast(int value)
{
if (head == null)
{
head = new Node();
head.value = value;
head.next = null;
}
else
{
Node temp = new Node();
temp.value = value;
Node current = head;
while (current.next != null)
{
current = current.next;
}
current.next = temp;
}
}
public void PrintAll()
{
Node current = head;
while (current != null)
{
Console.WriteLine(current.value);
current = current.next;
}
}
}
这里是主要方法
static void Main(string[] args)
{
LinkedList list = new LinkedList();
list.AddLast(3);
list.AddLast(5);
list.AddLast(4);
}
1) 我完全得到了第一部分 list.AddLast(3)。由于 head 为空,我们创建一个新节点 head 并为其赋值。
2) 当调用 list.AddLast(5) 时,head 不再为 null,因此我们创建了一个新的临时节点,并为其赋值。现在我们创建一个新的节点 current 保存 Head 的值,要注意 Head.Next 为空。
现在我们遍历 current 并将我们的 temp 节点放置到 current.Next。
3) 现在,在调用 list.AddLast(5) 时,当前不应该再次被 Head 的内容覆盖吗?这是 Head.Value = 3 和 Head.Next = Null。
那么不应该是 current.Value = 3 和 Current.Next = Null 吗?如果不是,那为什么?
【问题讨论】:
-
使用 BCL LinkedList<T>,您不必担心
-
这也有效,但我不明白为什么,我正在学习自己制作。
标签: c# .net data-structures linked-list singly-linked-list