约瑟夫环问题 【循环链表的应用】
2015-07-01 09:11
357 查看
#include <iostream> #include <cstdlib> using namespace std; typedef struct student //约瑟夫环 { int data; struct student* next; }node,*LinkList; void printfList(LinkList head) { LinkList p=head; if (head!=NULL){ do{ cout<<p->data<<" "; p=p->next; }while(p!=head); cout<<endl; } } void Josephus(int n,int k,int m) { int i=2; LinkList head=(LinkList)malloc(sizeof(node)); head->next=head; head->data=1; LinkList pre=head; while(i<=n){ LinkList p=(LinkList)malloc(sizeof(node)); p->data=i; p->next=pre->next; pre->next=p; pre=p; i++; } printfList(head); LinkList mend=pre; int kk=0; while(kk!=k){ mend=mend->next; ++kk; } //找到k个开始 while(n--){ int mm=1; pre=mend; while(mm!=m){ //不是要求的数,指针每次往前推一步,mend指向报数的人,pre指向前一个 pre=mend; mend=mend->next; mm++; } pre->next=mend->next; //前一个链到下一个准备报数的 cout<<mend->data<<endl; LinkList deletem=mend; mend=pre->next; //mend指向报数的人 free(deletem); //最后删除 } } int main() { Josephus(13,4,1); return 0; }
相关文章推荐
- Spring 3 MVC深入研究
- [JQ权威指南]第八天:复制元素节点
- wifi连接android设备进行调试
- 我国党员增速放缓
- 我的第一篇博客
- ubuntu14.04安装ssh服务
- java 容器类大集结
- Spring MVC之@RequestBody, @ResponseBody 详解
- leetcode_Insertion Sort List
- 织梦登陆后台成功后又返回登陆界面怎么回事?
- GitHub 优秀的 Android 开源项目
- EasyUI中,使用jquery或者js动态添加元素,验证失效的解决办法
- 项目杂记五
- ubuntu14.04 安装openssh-server 报依赖错误的解决过程
- iOS开发之Relaese时关闭NSLog使之不在控制台显示
- Windows mysql 下忘记root密码的解决办法
- 做游戏长知识------基于行为树与状态机的游戏AI(一)
- 指针的指针
- 使用命令行工具运行Xcode 7 UI Tests
- Comparsion in JavaScript