环形单链表的约瑟夫问题
来源:互联网 发布:淘宝查销售额 编辑:程序博客网 时间:2024/06/06 06:48
题目:
约瑟夫环(约瑟夫问题)是一个数学的应用问题:
已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌只剩一个人。
解题思路:
1、如果链表为空,或者链表节点数为1,return head;
2、环形链表中循环遍历每个节点,不断转圈,不断让每个节点报数
3、当报数达到m时,删除当前报数的节点
4、删除节点后重新连接为环形
5、待剩余最后一个结点时return结束。
链表结点结构定义:
typedef struct Node{ int data; struct Node* next;}node, *pLinkedList;
代码:
Node* josephus(pLinkedList head, int m){ if (head == NULL || head->next == head) return head; pLinkedList last = head; //将last设置为head前一个节点 while (last->next != head) { last = last->next; } int count = 0; while (head != last) { //报数够m时删除当前节点,即head节点 if (++count == m) { last->next = head->next; free(head); head = NULL; count = 0;//count重新置为0 } else { last = last->next; } head = last->next; } return head;}
阅读全文
0 0
- 环形单链表的约瑟夫问题
- 环形单链表的约瑟夫问题
- 环形单链表的约瑟夫问题
- 环形单链表的约瑟夫问题
- 数据结构 环形单链表的约瑟夫问题
- 环形单链表的约瑟夫问题 Python版
- 链表问题(4)-- 环形单链表的约瑟夫问题
- 链表问题---环形单链表的约瑟夫问题
- 构造数组MaxTree、环形单链表的约瑟夫问题等总结
- Java——环形单链表的约瑟夫问题
- 左程云_算法与数据结构 — 链表问题 — 06环形单链表的约瑟夫问题_normal&advanced
- 环形链表+约瑟夫问题实现
- Java环形链表--约瑟夫问题
- 约瑟夫问题(环形链表解题)
- 环形链表,约瑟夫问题,(7)
- 环形链表实现约瑟夫问题 java语言
- 约瑟夫问题的循环单链表实现
- 约瑟夫问题的循环单链表实现
- 51nod1355 斐波那契的最小公倍数
- 动态规划——openjudge7624山区建小学
- vbscript管理磁盘文档目录
- 数据结构(二)——队列
- 架构和设计有什么区别?
- 环形单链表的约瑟夫问题
- tensorflow中tf.maximum,tf.minimum,tf.argmax,tf.argmain的对比
- linux内核移植
- GreenDao的简单使用
- HDU4734[F(x)]
- 穷举法&在给定一组字符中随机抽取字符的方法
- 本地对象的常用几种方法
- 邮件退件的挺多,邮件营销的时,退件率多少合适?阈值控制在多少?
- 转发 、JSP开发常见问题