约瑟夫问题:有N个小孩围成一圈并依次编号,教师指定从第M个小孩开始报数,当报到第S个小孩时,即令其出列,然后再从下一个孩子起从1开始继续报数,数到第S个孩子时候继续令其出列,这样直到所有的孩子都出列。求小孩出列的顺序。
思想:单向环链表解决:1.先是建立一个带有表头节点的N个小孩的单向环表;2.利用指针p调整环型链表最后一个指向回来到第一个数据节点;3.再利用指针p指向第M-1的孩子,p->next指向第M的小孩;3.内层循环报数到第S个人,将节点打印输出,并删除掉,外层循环N次,目的是使所有的小孩都出列。
源程序如下:
结果:
原创文章,欢迎转载,转载请注明:blog.csdn.net/jjzhoujun2010
作者:Dream Fly