无法理解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 ?
}
}
}
答案 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
。
希望这是可以理解的。如果没有给我发表评论。