约瑟夫问题

void CTest::TestJoseph()
{
    CircleList<int> jobs;

    for(int i=1; i<16; i++)
    {
        jobs.AddTail(i);
    }

    jobs.SetBegin();
    // 最后留下1个人,也就是说要删除14个人
    int len = jobs.GetCount();

    for(int i=1; i<len; i++) // 要删除的人数
    {
        for(int j=0; j < 3; j++)// 报数
        {
            jobs.GetCurrentDataAndRemoveNext(); // 移动到下一个
        }

        // 找到要删除的结点
        jobs.RemoveThis();
    }

    cout << jobs.GetCurrentDataAndRemoveNext() << endl;

}


你可能感兴趣的:(约瑟夫问题)