循环动态更改列表

时间:2016-07-14 00:04:56

标签: algorithm language-agnostic pseudocode

允许我循环遍历动态变化列表的好方法/算法。

  • 此列表可包含重复项
  • 我只需要当前元素之后的下一个元素。即如果我目前在下一次迭代中Select-Object,我想a[n]无论

目前我尝试这样做(伪代码),这非常简单 但是,它不适用于重复

a[n]

我正在考虑为此问题使用链接列表。你会推荐一个不同的解决方案,还是唯一的链接列表?

编辑: 通过动态改变,我的意思是列表中的内容可以在'循环'中调整,即nextItem()调用。假设只有一个线程。

1 个答案:

答案 0 :(得分:0)

这是一个C#实现。一旦到达循环结束,它就会回到起点。您可以修改它以在最后抛出异常或任何其他操作。    在您的示例中,虽然您使用列表元素作为currentItem,但它是listElement的事实才是第一次。

    List<String> list = new List<String>();
    int currentItem = 5; // or InitializeCurrentItem {indexOf(listElementToSearchFor);}
    static string nextItem()
    {
        //Handle case where the end of the loop is reached
        if (currentItem == list.Count) currentItem = 0;
        //Ensure current item is updated
        return list[currentItem++];
    }

    void Main()
    {

        list.Add("a");
        list.Add("b");
        list.Add("c");
        list.Add("d");
        list.Add("e");

        Console.WriteLine(nextItem());  //a
        Console.WriteLine(nextItem());  //b
        list.Insert(2, "z"); //add z at the 2nd index
        Console.WriteLine(nextItem());  //z
        Console.WriteLine(nextItem());  //c
        Console.WriteLine(nextItem());  //d
        Console.WriteLine(nextItem());  //e
        Console.WriteLine(nextItem());  //a
}