对链表中的节点进行计数

本文关键字:节点 链表 | 更新日期: 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,所以你可以上下移动列表,你可以跟踪列表的headtail,让你轻松地从一端或另一端计数。

为了响应您的评论,您可以从当前节点计数到列表末尾,然后从列表长度中减去该数字。这假设您正在跟踪列表的长度。