C#链表可以';我不懂加法

C#链表可以';我不懂加法,c#,linked-list,C#,Linked List,无法理解Head是如何获取传递给curr的数据的。如果有人能给出一个清晰的解释那就太好了 class LinkedListService { private Service Head; public LinkedListService() { Head = null; } public void add(Service data) { Service curr = Head; if (Head =

无法理解Head是如何获取传递给curr的数据的。如果有人能给出一个清晰的解释那就太好了

class LinkedListService
{
    private Service Head; 
    public LinkedListService()
    {
        Head = null;
    }
    public void add(Service data)
    {
        Service curr = Head; 
        if (Head == null)
        {
            Head = data;
        }
        else
        {
            while (curr.Next != null)
            {
                curr = curr.Next;
            }
            curr.Next =  data; // how does Head receive the data that is passed to curr ?
        }
    }
}
没有。在第一行中,
curr
指向对象
头部

Service curr = Head;  //    curr --> Head
现在,如果
Head
尚未初始化,这意味着:
如果(Head==null)
它将获取数据并将
Head
指向内存中该行中存在
数据的同一地址:

Head = data;
另一方面,如果
头部
已经存在,则新数据必须转到尾部的末尾。尾部表示为一系列元素,可通过
Next
属性访问这些元素:

Head | Head.Next --> item2 | item2.Next --> item3 | item3.Next --> null
尾部的最后一项将没有下一项。所以它的值将是
null
。只要存在
Next
元素,while循环就会贯穿整个尾部,并且在每一步都将
Next
元素分配给
curr
ent元素:

while (curr.Next != null)
{
    curr = curr.Next;
}
当到达没有
Next
项的最后一个元素时,它将获取
Next
属性,并将其指向
数据
所在的内存地址:

curr.Next =  data;
不,列表末尾还有一项。这个新项的下一个属性再次指向
null


希望这是可以理解的。如果不给我留言。

我们应该如何猜测
服务
类实现?你的问题是什么?无论你在这里问什么,都与代码不完全相关。显示您的完整代码
curr.Next =  data;