C#Linked-list无法理解add方法

时间:2017-03-13 10:21:18

标签: c# linked-list

无法理解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 ?
        }
    }
}

1 个答案:

答案 0 :(得分:0)

curr.Next =  data; // how does Head receive the data that is passed to curr ?

它没有。在第一行curr指向对象Head

Service curr = Head;  //    curr --> Head

现在如果Head尚未初始化,则意味着:if (Head == null)它将获取数据并将Head指向内存中此data存在的同一地址:

Head = data;

另一方面,如果Head已经存在,则新数据必须到达尾部。尾部表示为一系列可通过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属性并将其指向data所在的内存地址:

curr.Next =  data;

最后,列表中没有其他项目。同样,这个新项目的Next属性指向null

希望这是可以理解的。如果没有给我发表评论。