循环链表 ——解决约瑟夫环
来源:互联网 发布:linux切换图形界面命令 编辑:程序博客网 时间:2024/06/05 12:41
已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。
#include <iostream>using namespace std;struct Node { int data; Node* next;};Node* create(int n) { // 1 2 3 ……n Node* cur, *q, *head; cur = (Node*)malloc(sizeof(Node)); head = cur; cur->data = 1; for (int i = 2; i <= n; i++) { q = (Node*)malloc(sizeof(Node)); q->data = i; cur->next = q; cur = q; } cur->next = head; return head;}void printLink(Node* head) { if (head == NULL) { cout << "空链表" << endl; return; } Node* p = head; while (head != NULL) { cout << p->data << endl; p = p->next; }}void processLink(Node* head, int k, int m) { //从编号为k(1<=k<=n)的人开始报数,数到m的那个人出列; Node* cur = head; Node* tmp = cur; //找到编号为k的节点 while (cur->data != k) { cur = cur->next; } while (cur->next != cur) { //找到第m个数 for (int i = 0; i < m; i++) { tmp = cur; cur = cur->next; } cout << cur->data; tmp->next = cur->next; free(cur); cur = tmp->next; } cout << cur->data; free(cur);}//12345 41325int main() { Node *node = create(5); processLink(node, 3, 1);}
0 0
- 循环链表 ——解决约瑟夫环
- 循环链表--解决约瑟夫环问题
- 循环链表—约瑟夫环问题
- 循环链表(解决约瑟夫环问题)(VS…
- 双向循环链表-解决顺逆时针约瑟夫环
- php通过循环链解决约瑟夫环
- 约瑟夫问题——循环链表
- 约瑟夫问题——循环链表
- 单向循环链表—约瑟夫问题
- 数据结构:循环单向链表——约瑟夫环
- 循环链表的应用——约瑟夫环
- 循环链表应用——约瑟夫环问题
- 数据结构练习题 约瑟夫环—用循环链表实现
- 循环链表 约瑟夫环
- 约瑟夫环 - 循环链表
- 循环链表---约瑟夫环
- 循环链表-约瑟夫环
- 约瑟夫环循环链表
- Centos 6.5安装git
- Jquery基础教程之-选择元素
- xts可扩展的时间序列
- CloudSimExample1-仿真步骤
- 动态配置连接数据库
- 循环链表 ——解决约瑟夫环
- linux里的shell环境变量
- IE下判断IE版本的语句...[if lte IE 8]……[endif]
- 内容提供器--2、创建内容提供器
- PHP学习笔记:1.PHP基本语法详解整型
- CloudSim源码分析-CloudSim的初始化
- Java JSP 内置对象
- VS 2012问题集锦
- 利用NSString的Hash方法比较字符串