该程序使用了一个链表类List来实现约瑟夫退圈问题的解决。

首先,在List类中定义了一个内部结构体node,表示链表的节点。节点包含一个id表示节点的编号,以及一个指向下一个节点的指针next。

List类中还有三个私有成员变量m、startId和n,分别表示报数的最大值、开始序号和总人数。

List类中有一个公有成员函数startset,用于初始化链表头节点。

List类中有一个公有成员函数setlist,用于建立循环链表。函数参数x表示节点的数量。函数通过尾插法的方式依次创建节点,并将节点连接起来形成循环链表。

List类中有一个公有成员函数runlist,表示程序的核心环节。函数首先要求用户输入总人数、报数最大值和报数开始时的序号。然后调用setlist函数创建循环链表。接下来,根据开始序号移动节点,直到到达开始的那个数。接着,通过循环出圈的方式,依次删除节点,直到链表中只剩下一个人。最后,输出最后一位剩下的人的编号。

在main函数中,创建一个List对象list,并调用其runlist函数,完成约瑟夫退圈问题的求解。

整个程序没有涉及文件操作或数据库操作,只是通过链表数据结构和循环来解决问题


原文地址: https://www.cveoy.top/t/topic/iPJK 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录