Advertisement

数据结构---单链表实现J.

阅读量:

该数学问题被称为约瑟夫环或约瑟夫问题。它涉及n个参与者围坐成一圈的情况:共有n人(编号分别为1至n)围坐成一圈,并按顺时针方向依次编号。假设起始编号为k的人开始依次报数,在报到第m个时该参与者将被淘汰出圈;接着由被淘汰后紧随其后的下一个人重新从1开始计数并继续此过程直至所有人都被淘汰为止

实现约瑟夫环算法时采用链表结构的第一步是建立一个单循环链表,并将指针初始化指向头节点。接着,在当前指针位置开始计数,并按照固定步长m依次向前移动m-1个节点到达目标位置进行删除操作。随后,在被删除节点之后的那个节点作为新的起始点重新开始计数过程;如此往复直到所有参与者中仅有最后一个存活者为止。

这里写图片描述
  • 代码实现:
复制代码
     LinkNode* JosephCycle(LinkNode* head, size_t food)
     {
     if(head==NULL){
         //空链表
         return NULL;
     }
     LinkNode* cur = NULL;
     size_t i = 0;
     while(h

全部评论 (0)

还没有任何评论哟~