约瑟夫C语言实现

来源:互联网 发布:网络暴力 恐怖片 编辑:程序博客网 时间:2024/05/18 18:53

          最近几个月学JAVA,python比较多,很久没怎么写C代码了,最近开始决定用C实现一些算法练练手,不然马上研一下学期实验室项目启动以后要用C做项目写大量代码就囧了。

          先写一个约瑟夫环的算法实现

          约瑟夫环问题:n个人围成一圈,从第k人个开始报数,假设数到m的人出圈,最后剩下一个,求这个人的编号。解题思路比较清晰:一般有2种实现方法,比较经典的就是用n个节点的循环单链表来模拟这n个人围成的圈,利用链表删除节点的操作一个一个删除节点,最后留下的那个就是幸存者。还有一种方法是利用数组和取模运算实现,利用模运算也能不断循环遍历数组删除元素,最后留下一个满足条件的元素. 第二种方法代码量比较少,但是运行效率上不如循环链表来实现。

         下面是用循环单链表来实现的代码:



         

         
               

             
               

         

0 0