对链表中的节点进行计数
本文关键字:节点 链表 | 更新日期: 2023-09-27 18:36:15
假设我有一个这样的小链表:
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;
}
我认为你需要一个双向链表,它就像你拥有的链表一样,但它有一个previous
和一个next
,所以你可以上下移动列表,你可以跟踪列表的head
和tail
,让你轻松地从一端或另一端计数。
为了响应您的评论,您可以从当前节点计数到列表末尾,然后从列表长度中减去该数字。这假设您正在跟踪列表的长度。