![](https://cos-cdn.shuashuati.com/pipixue-wap/2020-1230-1107-56/ti_inject-812ce.png)
约瑟夫问题:设由n个人围坐在一个圆桌周围,现从s个人开始从1报数,数到m的人出列,然后从出列的下一个人重新开始从1开始报数,数到m的人再出列.......如此反复,直到所有人都出列,求出列的次序。 要求:分别用顺序表和链有现从种存储结构编写程序后再上机。 算法思路: (一) 顺序存储方式:将n个人的编号顺序存放在顺序表中,从表的第 s 个元素开始计数到第s+m-1 个元素,输出该元 素(在寻找过程中若一表尾,从跳到开始位置,通过取模实现),再删除该元素,从删除的元素的下一个元素重复该过程,一直到顺序表空。 (二)链式存存储方式: (1)在不带头结点的循环中查找第s个结点,用p作 为第s个结点的指针,pre指向p 的前驱; (2)从p所指的结点开始计数查找第m个结点; (3)输出该结点元素值; (4)删除该结点,同时将该结点下一结点指针作为当前指针即p指针,重复到步骤(2),直到中所有结点都被删除完为止。