约瑟夫环问题
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Reflection;
using Microsoft.Practices.EnterpriseLibrary.Data;
using System.Data;
using Microsoft.Practices.EnterpriseLibrary.Data.Sql;
using Microsoft.Practices.EnterpriseLibrary.Common.Configuration;
using Microsoft.Practices.EnterpriseLibrary.Caching;
using Microsoft.Practices.EnterpriseLibrary.Caching.Database;
using Microsoft.Practices.EnterpriseLibrary.Caching.Expirations;
using Microsoft.Practices.Unity;
using Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ContainerModel.Unity;
using ClassLibrary1;
using ConsoleApplication1;
namespace NewVirtualOverride
{
class Program
{
static void BeginCount( int n,int m)
{
MyList begin = new MyList(1, null, null);
MyList temp = begin;
for (int i = 2; i <= m; i++)
{
if (i != m)
{
temp.next = new MyList(i, null, temp);
temp = temp.next;
}
else
{
temp.next = new MyList(i, begin, temp);
//temp.next.next = begin;
}
}
begin.prior = temp.next;
temp = begin;
while (temp!=temp.prior)
{
for (int i = 0; i < n; i++)
{
if (i != n - 1)
{
temp = temp.next;
}
else
{
Console.WriteLine(temp.me);
MyList t = temp.next;
temp.delete();
temp = t;
}
}
}
Console.Write(temp.me);
}
static void Main(string[] args)
{
int n=3;//the number to count
int m = 20;//the numbers will be count
BeginCount(n, m);
Console.Read();
}
}
public class MyList
{
public int me;
public MyList next;
public MyList prior;
public MyList(int a, MyList b,MyList c)
{
me = a;
next = b;
prior = c;
}
public void delete()
{
this.prior.next = this.next;
this.next.prior = this.prior;
}
}
}