理解面向对象程序设计中的抽象理论物业

制冷设备2021年09月06日

以下是利用结构体的方法解决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
友情链接