Josephus问题的C++新解法

Josephus问题的C++新解法,第1张

Josephus问题的C++新解法,第2张

Josephus.h
class约瑟夫斯
{
public:
void out control(int num,int begin,int interval);
protected:
int num;
int begin;
int interval;
};

list . h
struct person
{
int number;
人*下一个;
};


class list
{
public:
list(int num)//initialize point-> number
{
josephus = new people[num];
point = Joseph us;
for(int I = 1;I {
point-> number = I;
point-> next = Joseph us+I % num;/*以+1为模设置节点的下一个指针,
到了末尾会自动指向第一个,形成一个环链*/
point = point-> next;
}
point = & Joseph us[num-1];//设置开始指针指向最后一个节点,进入循环时从0开始。
}

~ List()
{
delete[]josephus;//返回堆内存空
}

void Change (int num,int begin);
void计数(int interval);
void Output();
void Show();

受保护的:
人*约瑟夫斯;
人*点;
人*切_点;
};


Joseph us . CPP
# include
# include " Joseph us . h "
# include " list . h "
使用命名空间std

void josephus::out control(int num,int begin,int interval)//调用List的成员函数,依次输出(num)中列出的数字
{
List;
在。Change (num,begin);

coutnext
}
}

Void List::Show() //打印编号
{
cout next;
point = cut _ point;
}


main . CPP
# include
# include " Joseph us . h "
使用命名空间std

void main()
{ int num,begin,interval

cout > num
if(num {
cout return;
}

cout>interval;
if(intervalnum)
{
cout

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » Josephus问题的C++新解法

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情