约瑟夫环问题
来源:互联网 发布:怎样在淘宝上注册网店 编辑:程序博客网 时间:2024/06/05 20:16
约瑟夫环问题可以用循环链表解决,即链表的尾指针指向链表的头结点,形成循环链表,从第一个有数据域的结点开始报数,报到m的数的结点删除,最后剩下一个结点,这个结点就是约瑟夫环的问题的解。
#include <stdio.h>#include <stdlib.h> typedef struct num{int data;struct num *next;}list,*link;link create() //创建链表 {link head,temp,pnew;int n;head = (link)malloc(sizeof(list));temp = head;scanf("%d",&n);while( n!=0 ) //输入0结束创建链表{pnew = (link)malloc(sizeof(list));pnew->data = n;pnew->next = NULL;temp->next = pnew;temp = pnew;scanf("%d",&n);}temp->next = head->next;return head;}void yuesefu(link head) //约瑟夫环的实现函数 {link p,q,r;int i,m;p = head;printf("请输入循环数:");scanf("%d", &m);while(p->next != p) //判断是否是最后一个结点 {for(i=0;i<m;i++) //利用循环数m找到要输出的p结点 {q = p; // 找到要输出p结点之前的结点q p = p->next; //找到要输出的p结点 } printf("%d ",p->data); //输出p结点的数据域数 q->next = p->next; //q的next指针指向p的next域,即删除p结点 } }int main(){link head;head = create();yuesefu(head);}
最后输出的1就是约瑟夫环问题的解。
0 0
- 约瑟夫问题、约瑟夫环
- Josephus约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题(Josephus)
- 约瑟夫环问题--java
- 约瑟夫环问题 Josephus
- 约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题
- 求解约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题
- 约瑟夫环问题
- virtualbox异常处理
- memcache 的内存管理介绍和 php实现memcache一致性哈希分布式算法
- Java类初始化
- DP练习 - 奶牛的锻炼
- vector::clear ,vector::crbegin (c++11),vector::crend(c++11)
- 约瑟夫环问题
- JAVA:自定义注解
- sqlite 版本升级及数据库操作类(二)
- 一、windows 下安装并使用 lua
- poj---1847
- hibernate一对多单向关联
- POJ----2502
- Supplicant层socket与内核网口、socket的对应连接
- activity的生命周期