当前位置:编程学习 > C#/ASP.NET >>

使用C#循环链表解决约瑟夫环的问题

前几日看到一个关于约瑟夫环的面试题,于是试着动手做了一下,没有采用.Net类库的LinkedList类,自己实现了一个循环链表结构,然后模拟游戏过程得出结果。

具体代码如下:

\代码
class Program
    {
        static void Main(string[] args)
        {
            const int HUMAN_MAX = 17;
            const int HUMAN_INDEX = 3;
            const int HUMAN_NUMBER = 0;
 
            LinkTable<Human> list = new LinkTable<Human>();
            for (int i = 0; i < HUMAN_MAX; i++)
            {
                list.Add(new Human(i));
            }
 
            Human human = list.First;
            int number = HUMAN_NUMBER;
            do
            {
                if (number == HUMAN_INDEX)
                {
                    number = 0;
                    Console.WriteLine(human.ID);
                    list.Remove(human);
                }
                else
                {
                    number++;
                    human = (Human)human.Next;
                }
            }
            while (human.Next != human);
            Console.WriteLine(human.ID);
 
            Console.Read();
        }
 
        public class Human : LinkT
补充:软件开发 , C# ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,