使用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
{
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# ,
上一个:C#集合之Hashtable
下一个:C#获取文件编码
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,
部份技术文章来自网络,