说我有一个像这样的小链表:
var curr = Names
.Create("name1")
.Previous("name2")
.Previous("name3")
.Previous("name4")
.Previous("name5");
private Names(Names next, string person)
{
Next = next;
Person = person;
}
public Names Next { get; }
public string Person { get; }
public Names Previous(string person)
{
return new Names(this, person);
}
public static Names Create(string person)
{
return new Names(null, person);
}
我希望能够在curr
中对左右两者进行计数,因此我有一个FromRight
方法,它将从右侧返回名称,给定一个int。我认为最简单的方法是创建一个帮助函数来计算名称的数量,但任何提示我如何做到这一点?
我非常肯定我可以从左边算起来,但右边对我来说有点麻烦。
public string FromRight(Names names, int numberFromRight)
{
var nameCount = Count(names);
//Counting from the right in Names
return "";
}
private int Count(Names names)
{
int count = 0;
//Some counting logic here
return count;
}
答案 0 :(得分:0)
我认为您需要一个doubly linked list,就像您拥有的链接列表一样,但它有一个previous
和一个next
,因此您可以在列表中上下移动,然后就可以了跟踪列表的head
和tail
,以便您轻松地从一端或另一端进行计数。
在回复您的评论时,您可以从当前节点计数到列表末尾,然后从列表长度中减去该数字。这假设您正在跟踪列表的长度。