数据结构---单链表实现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)
还没有任何评论哟~
