理解面向对象程序设计中的抽象理论物业
以下是利用结构体的方法解决josephus问题: 当我们学过结构体后,我们了解到结构体自身的成员指针可以指向自身对象的地址的时候,我们很容易想到解决这个数学问题,用结构体来描述是再合适不过的了,用它可以很完美的描述环形链表。
#include iostream
#include string
using namespace std;
struct Children
{
int number;
Children *next;
兄弟玩神仙道双线14服“云起仙临”今日10点火爆开启!2011年仙侠版页游戏神仙道要怎么才能玩出高水平玩得更顺心。不说不知道的游戏细节 };
void show(Children *point,int num)//环链输出函数
{
for(int i=1;i=num;i++)
{
coutpoint-number\",\";
point = point-next;
}
}
void main()
{
int num;//孩子总数
int interval;//抽选号码
cout\"请输入孩子总数:\";
cinnum;
cout\"请输入抽选号码:\";
cininterval;
Children *josephus = new Children[num];//设置圈的起点指针,并动态开辟堆空间用于存储数据
Children *point = josephus;//用于初化链表的指针,起始地址与josephus指针相同
for(int i=1;i=num;i++)
{
point - number = i;
point - next = josephus + i % num;//利用+1取模的方式设置节点的next指针,当到最后的时候自动指向到第一个,形成环链
point = point-next;//将位置移到下一饿节点也就是下一个小孩的位置
}
show(point,num);
Children *cut_point;
point=josephus[num-1];//把起始指针设置在最后一个节点,当进入循环的时候就会从0开始,这样就好让不需要的节点脱离
int k=0;//故意设置一个k观察while循环了多少次
while(point-next!=point)//通过循环不断的寻找需要放弃的节点
{
k++;
for(int i = 0;iinterval;i++)//找需要放弃的节点位置
{
cut_point=point;//存储截断位置指针
point=cut_point-next;//将point的指针移动到放弃的节点位置,此处也和while循环终止条件有关系
}
cut_point-next=point-next;//将截断出的next指针设置成放弃处节点的next指针,使放弃处节点也就是不需要的节点脱离
cout\"k:\"kendl;
}
cout\"最后的赢家:\"endlpoint-numberendlpointendlpoint-nextendl;
delete[] josephus;
t();
t();
}
北京白癜风治疗哪家好激素药
郑州治疗卵巢炎哪家好
- 上一页:理解语言的布尔类型和枚举类型
- 下一页:理解面向对象程序设计中的抽象理论计划
-
又一富豪入驻!恒生银行出手投资新加坡!
作为全球建筑业富豪榜的李泽楷,其建筑业的一举一动,一直是很多人高度重...
2024-12-14
-
6月26日,广州市旅游零售业职业学校2022年特长生招生面试启动
6同月26日天河区旅游观光国际贸易职业了学校2022年擅长于生理科考取启动 为...
2024-11-28
-
无证“眼科医生”行医,每年工资减半,当眼科医生必须得有证吗?
小有理,是输液科的新生力量。他的到来,大家都很高兴。这是因为,又多一...
2024-11-25
-
PyTorch都用代码段合集
点击上图,核对考试细节 仅作学术研究社交,不都是本公众号主张,侵权联...
2024-11-23
-
今日欧美圈:Rihanna将出演男友新单MV,多位歌星列席Met Ga
A$AP奥丁上新专辑《A Ghetto Love Tale》将于5月5日发行。贾斯汀显现出来在专辑海...
2024-11-18
-
这几部剧播出已是十多年,曾经红极一时,都追过证明你已经老了
间隔时间匆匆而过,我们也在慢慢的自小。这么多年那时候,我们也是经历了...
2024-11-04