[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++;
}
}
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++中for循环的一个猜想,并通过实验验证。不过没有理论支持。
- C++程序设计实验报告(十七)----实现冒泡排序算法,并将之定义为一个函数
- 定义一个不受计算机字长限制的整数类INT,要求INT与INT以及INT与C++基本数据类型int之间能进行+、-、×、÷和=运算,并且能通过cout输出INT类型的值。(持续添加)
- C++程序设计实验报告(二十)---实现冒泡排序算法,并将之定义为一个函数,其中参数是指向数组的指针变量
- C/C++语言之通过定义指针函数方式来实现在一个cpp文件里面获取另外一个cpp文件函数的返回值
- C++第4次实验(基础班)—循环结构程序设计(上机报告)
- 循环队列的定义、入队、出队等操作 C++代码实现
- Android 通过solid来定义不同边框的颜色,可以只定义一个边框的颜色
- WSS3SDK之:通过Feature创建一个自定义列表定义
- Java循环一个对象的所有属性,并通过反射给这些属性赋值/取值
- 在C++里边定义一个宏,最多可以包含几层?
- C语言定义了一个结构体怎么分配内存?C\C++中结构体变量与结构体指针内存分配问题?
- C++中方法定义和调用需要注意的一个地方
- 1.使用C++封装一个链表类LinkList
- 通过实验了解C++中的类是如何实现多态
- 39、C++定义一个类,实现向量的加减运算
- c++第一次实验:循环
- c++第二次实验(循环题)
- 通过一个代码简要解析函数的定义与调用
- 给你一个单词a,如果通过交换单词中字母的顺序可以得到另外的单词b,那么定义b是a的兄弟单词。现在给你一个字典,用户输入一个单词,让你根据字典找出这个单词有多少个兄弟单词。