约瑟夫生死游戏(C++)数据结构实现

题目二:约瑟夫生者死者游戏(链表存储)一:【内容与要求】约瑟夫游戏的大意是:每30个旅客同乘一条船,因为严重超载,加上风高浪大,危险万分;因此船长告诉乘客,只有将全船一半的旅客投入还中,其余人才能幸免

题目二: 约瑟夫生者死者游戏(链表存储) 一:【内容与要求】 约瑟夫游戏的大意是:每30个旅客同乘一条船,因为严重超载,加上风高浪 大,危险万分;因此船长告诉乘客,只有将全船一半的旅客投入还中,其余人才能 幸免遇难。无奈,大家只得同意这种办法,并议定30个人围成一圈,由第一个人 数起,依次报数,数到第9人,便把他投入大海中,然后再从他的下一个人数起, 数到第9人,再将他扔进大海中,如此循环地进行,直到剩下15个乘客为止。问 哪些位置是将被扔下大海的位置。 二:概要设计 利用链表循环来解决。首先,就必须先定义一个链表,按照所需要的长度进 行定义,然后令其为指针指向头指针,即完成了一个循环链表的创建。接下来先打 印链表输出。其次,就是算法实现,需要利用指针来进行,数据域标记人员编号, 先用一个指针循环查找,找到第一个需要删除的人,标记为1,先输出节点数,再 进行删除。依次循环查找,直到被删除的节点数量为总人数的一半的时候则结束。 三:程序执行流程图

腾讯文库约瑟夫生死游戏(C++)数据结构实现