博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
循环链表解决约瑟夫环问题
阅读量:5273 次
发布时间:2019-06-14

本文共 1961 字,大约阅读时间需要 6 分钟。

1 /** 2  * 循环链表求解约瑟夫环问题 3  **/ 4 #include 
5 #include
6 using namespace std; 7 8 /** 9 * 数据结构10 **/11 typedef struct DanamicList {12 int id;13 struct DanamicList* next;14 } List;15 16 /**17 * 创建循环链表18 **/19 List* InitList(int numCount) {20 if(numCount <= 0) {21 cout << "Value is invalid!!!\n";22 exit(-1);23 }24 List *head = head = new List;25 if(!head) {26 cout << "Alloc memory failed!!!\n";27 exit(-1);28 }29 30 head->id = 1;31 List *pre = head;32 for(int index = 1; index < numCount; ++index) {33 List *temp = new List;34 if(!temp) {35 cout << "Alloc memory failed!!!\n";36 exit(-1);37 }38 temp->id = index + 1;39 temp->next = NULL;40 pre->next = temp;41 pre = temp;42 }43 pre->next = head;44 45 return head;46 }47 48 /**49 * 求解约瑟夫环问题50 **/51 void josephus(List* head, int number) {52 int count = 0, flag = 0;53 List *pre = head, *del = NULL;54 55 while(pre->next != head)56 pre = pre->next;57 do {58 ++count;59 if(number != count)60 pre = pre->next;61 else {62 count = 0;63 del = pre->next;64 cout << del->id << "\t";65 pre->next = pre->next->next;66 if (pre != pre->next)67 delete del;68 }69 if(pre == pre->next)70 ++flag;71 } while(flag - (number + 1)); // 数学关系72 delete pre;73 }74 75 /**76 * 主函数77 **/78 int main(void) {79 List *head = NULL;80 int totalPeople = 0, outNumber = 0;81 cout << "请输入总数和出队密码:";82 cin >> totalPeople;83 cin >> outNumber;84 85 head = InitList(totalPeople); // 创建循环链表86 josephus(head, outNumber); // 求解约瑟夫环87 88 return 0;89 }

 

转载于:https://www.cnblogs.com/gotodsp/p/3843587.html

你可能感兴趣的文章
Create参数为:nil/self/application的区别
查看>>
网络流24题 飞行员配对方案问题
查看>>
STM32空闲中断
查看>>
Python 直接赋值、浅拷贝和深度拷贝解析
查看>>
剑指offer python版 调整数组顺序使奇数位于偶数前面
查看>>
内容提供者编写步骤
查看>>
汇编指令
查看>>
Leader of All Crushing Machines in the Future
查看>>
luogu 4211
查看>>
Sql Server 默认值
查看>>
JavaEE之反射
查看>>
【转】经验分享:大型高并发高负载网站的系统架构
查看>>
HDU 6060 RXD and dividing (求贡献)
查看>>
java中 immutable,future,nio
查看>>
VMware ESX常用命令
查看>>
golang三方包应该如何安装--在线和离线
查看>>
选择排序
查看>>
鼠标移入移出透明度变化效果
查看>>
我工作这十年-世界在变化
查看>>
log4j2 不使用配置文件,动态生成logger对象
查看>>