您的位置:首页 > 编程语言 > C语言/C++

[C++]实验十一:通过定义一个循环链表类和Josephus类

2006-01-22 21:45 429 查看
#include "Josephus.h"

void main()
{
Josephus JosephusTest(10); //设有10个小孩
JosephusTest.Number(4,2); //从第2个小孩开始,数到第4个人出列
}

#include <list>
#include <iostream>
using namespace std;

class Josephus{
public:
Josephus(int);
void Number(int,int);
private:
list<int> Child;
};

Josephus::Josephus(int n)
{
for (int i=1; i<=n; i++)
Child.push_back(i);
}

inline void Josephus::Number(int m, int s)
{
list<int>::iterator iter = Child.begin();
//从S个同学开始
cout << "带“*”的表示被出列同学的编号:" << endl;
for (int i=1; i<s; i++)
iter++;
//开始数数,出列
while (iter != Child.end())
{
for (int j=1; j<m; j++,iter++)
{
if (iter == Child.end()) j--;
else cout << *iter <<" ";
}
if (iter == Child.end()) iter++;
cout << "*" <<*iter << endl;
iter = Child.erase(iter);
if (iter == Child.end()) iter++;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐