Josephus問題的C++新解法
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;
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
0條評論