由於沒用使用DoubleLinkNode<T>[] 來存儲數據,所以索引的處理顯得非常的麻煩(如果用了數組就存在鏈表的容量問題),希望高手們能給出好的方法。
下面就是具體實現了
class Program
{
static void Main(string[] args)
{
//初始化數據
CircleList<Person> list = new CircleList<Person>();
for (int i = 0; i < 17; i++)
{
list.AddLast(new Person(i + 1));
}
//當前報數人
DoubleLinkNode<Person> current = list.First;
//報數序號
int k = 0;
//循環報數
while (list.Count > 1)
{
k++;
Console.WriteLine(string.Format("{0}:{1}", current.Value.Id, k));
if (k % 3 == 0)
list.Remove(current);
current = current.Next;
}
Console.WriteLine(string.Format("Last Person:{0}", current.Value.Id));
Console.Read();
}
}
/// <summary>
/// 玩家
/// </summary>
public class Person
{
public Person(int id)
{
this.Id = id;
}
public int Id { get; set; }
}
下面是結果