计算链表中的节点

时间:2016-02-26 08:56:39

标签: c#

说我有一个像这样的小链表:

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;
}

1 个答案:

答案 0 :(得分:0)

我认为您需要一个doubly linked list,就像您拥有的链接列表一样,但它有一个previous和一个next,因此您可以在列表中上下移动,然后就可以了跟踪列表的headtail,以便您轻松地从一端或另一端进行计数。

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