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

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

阅读更多
个人分类: C++学习(原创)
上一篇[C++]实验八:学习类的聚集使用方法
下一篇[C++]第一、二、三次作业
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭