【问题标题】:C# Linked-list can't understand add methodC# Linked-list 无法理解 add 方法
【发布时间】:2017-03-13 10:21:18
【问题描述】:

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

【问题讨论】:

  • 我们应该如何猜测Service 类的实现?
  • 您的问题是什么?无论你在这里问什么都与代码不完全相关。显示您的完整代码

标签: c# linked-list


【解决方案1】:
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 元素分配给current 元素:

while (curr.Next != null)
{
    curr = curr.Next;
}

当它到达最后一个没有Next 项的元素时,它将获取Next 属性并将其指向data 所在的内存地址:

curr.Next =  data;

不,最后的列表中还有一项。同样,这个新项目的 Next 属性指向 null

希望可以理解。如果不给我评论。

【讨论】:

    猜你喜欢
    • 2020-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-30
    • 1970-01-01
    • 2018-11-13
    • 2010-10-09
    • 1970-01-01
    相关资源
    最近更新 更多