Joa*_*nge 1 .net c# performance data-structures
我的要求是每种类型T,我有许多元素(在1-30 +之间),首先我需要随机项目,然后我需要下一个,当我到达最后一个项目时,它应该返回第一个一个等等.
所以说T是Icon,而集合是Images(实例).
我希望有:
// program start:
Icon icon = RandomIcon(); // say 5th one for this case
// user clicks next icon:
icon = current++; (6, 7, 8, 1, 2, ...)
Run Code Online (Sandbox Code Playgroud)
对我来说,循环链表是有意义的,除了我必须做O(n),其中n是随机索引.
我希望得到最清洁,最好的实施,因此这个问题.
另一种可能的解决方案是创建一个链接列表,其底层数据结构是一个数组.这样你就可以在O(1)处索引,同时保持你的"圆度"
public class myLL
{
private T[] items;
private int i;
private int max_size;
public T GetCurrent() {
return items[i];
}
public T GetNext() {
i = i++ % max_size;
return items[i];
}
}
Run Code Online (Sandbox Code Playgroud)