约瑟夫环问题

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;
        }
    }
}
       

posted @ 2010-08-23 17:24  xpwilson  阅读(140)  评论(0编辑  收藏  举报